diff --git a/.gitmodules b/.gitmodules index e156524..f9792f6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,12 +7,12 @@ [submodule "tools/gn"] path = tools/gn url = https://github.com/yue/gn -[submodule "buildtools/third_party/libc++/trunk"] - path = buildtools/third_party/libc++/trunk - url = https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxx.git -[submodule "buildtools/third_party/libc++abi/trunk"] - path = buildtools/third_party/libc++abi/trunk - url = https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxxabi.git -[submodule "buildtools/third_party/libunwind/trunk"] - path = buildtools/third_party/libunwind/trunk - url = https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libunwind.git +[submodule "third_party/libc++/src"] + path = third_party/libc++/src + url = https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxx +[submodule "third_party/libc++abi/src"] + path = third_party/libc++abi/src + url = https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxxabi +[submodule "third_party/libunwind/src"] + path = third_party/libunwind/src + url = https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libunwind diff --git a/build/3pp/.style.yapf b/build/3pp/.style.yapf new file mode 100644 index 0000000..557fa7b --- /dev/null +++ b/build/3pp/.style.yapf @@ -0,0 +1,2 @@ +[style] +based_on_style = pep8 diff --git a/build/3pp/README.md b/build/3pp/README.md new file mode 100644 index 0000000..5030d5d --- /dev/null +++ b/build/3pp/README.md @@ -0,0 +1,5 @@ +# 3pp_util + +Contains helper scripts for 3pp configs. + +See [`//docs/docs/cipd_and_3pp.md`](/docs/cipd_and_3pp.md) diff --git a/build/3pp/fetch_github_release.py b/build/3pp/fetch_github_release.py new file mode 100644 index 0000000..57b2786 --- /dev/null +++ b/build/3pp/fetch_github_release.py @@ -0,0 +1,94 @@ +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import argparse +import hashlib +import json +import os +import pathlib +import re +import urllib.request + + +def _fetch_json(url): + return json.load(urllib.request.urlopen(url)) + + +def _latest(api_url, install_scripts=None): + # Make the version change every time this file changes. + md5 = hashlib.md5() + md5.update(pathlib.Path(__file__).read_bytes()) + import __main__ + md5.update(pathlib.Path(__main__.__file__).read_bytes()) + + if install_scripts: + for path in install_scripts: + md5.update(pathlib.Path(path).read_bytes()) + file_hash = md5.hexdigest()[:10] + + release = _fetch_json(f'{api_url}/releases/latest')['tag_name'] + print('{}.{}'.format(release, file_hash)) + + +def _get_url(api_url, + artifact_filename=None, + artifact_extension=None, + artifact_regex=None): + # Split off our md5 hash. + version = os.environ['_3PP_VERSION'].rsplit('.', 1)[0] + json_dict = _fetch_json(f'{api_url}/releases/tags/{version}') + urls = [x['browser_download_url'] for x in json_dict['assets']] + + if artifact_regex: + urls = [x for x in urls if re.search(artifact_regex, x)] + + if len(urls) != 1: + raise Exception('len(urls) != 1: \n' + '\n'.join(urls)) + + partial_manifest = { + 'url': urls, + 'ext': artifact_extension or '', + } + if artifact_filename: + partial_manifest['name'] = [artifact_filename] + + print(json.dumps(partial_manifest)) + + +def main(*, + project, + artifact_filename=None, + artifact_extension=None, + artifact_regex=None, + install_scripts=None, + extract_extension=None): + """The fetch.py script for a 3pp module. + + Args: + project: GitHub username for the repo. e.g. "google/protobuf". + artifact_filename: The name for the downloaded file. Required when not + setting "unpack_archive: true" in 3pp.pb. + artifact_extension: File extension of file being downloaded. Required when + setting "unpack_archive: true" in 3pp.pb. + artifact_regex: A regex to use to identify the desired artifact from the + list of artifacts on the release. + install_scripts: List of script to add to the md5 of the version. The main + module and this module are always included. + """ + parser = argparse.ArgumentParser() + parser.add_argument('action', choices=('latest', 'get_url')) + args = parser.parse_args() + + api_url = f'https://api.github.com/repos/{project}' + if args.action == 'latest': + _latest(api_url, install_scripts=install_scripts) + else: + _get_url(api_url, + artifact_filename=artifact_filename, + artifact_extension=artifact_extension, + artifact_regex=artifact_regex) + + +if __name__ == '__main__': + main() diff --git a/build/3pp/print_cipd_version.py b/build/3pp/print_cipd_version.py new file mode 100755 index 0000000..33c29ea --- /dev/null +++ b/build/3pp/print_cipd_version.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python3 +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import argparse +import pathlib +import re +import subprocess + +_DIR_SOURCE_ROOT = str(pathlib.Path(__file__).absolute().parents[2]) + + +def main(): + parser = argparse.ArgumentParser() + # Hide args set by wrappers so that using --help with the wrappers does not + # show them. + parser.add_argument('--subdir', required=True, help=argparse.SUPPRESS) + parser.add_argument('--cipd-package', + required=True, + help=argparse.SUPPRESS) + parser.add_argument('--git-log-url', help=argparse.SUPPRESS) + parser.add_argument('--cipd-instance', + help='Uses value from DEPS by default') + args = parser.parse_args() + + if not args.cipd_instance: + cmd = [ + 'gclient', 'getdep', '-r', f'src/{args.subdir}:{args.cipd_package}' + ] + args.cipd_instance = subprocess.check_output(cmd, + cwd=_DIR_SOURCE_ROOT, + text=True) + + cmd = [ + 'cipd', 'describe', args.cipd_package, '-version', args.cipd_instance + ] + print(' '.join(cmd)) + output = subprocess.check_output(cmd, text=True) + print(output, end='') + if args.git_log_url: + git_hashes = re.findall(r'version:.*?@(\w+)', output) + if not git_hashes: + print('Could not find git hash from output.') + else: + # Multiple version tags exist when multiple versions have the same sha1. + last_version = git_hashes[-1] + print() + print('Recent commits:', args.git_log_url.format(last_version)) + + +if __name__ == '__main__': + main() diff --git a/build/OWNERS b/build/OWNERS index dce9d55..e6a4d3c 100644 --- a/build/OWNERS +++ b/build/OWNERS @@ -32,3 +32,5 @@ per-file whitespace_file.txt=* per-file OWNERS.status=* per-file OWNERS.setnoparent=set noparent per-file OWNERS.setnoparent=file://ATL_OWNERS + +per-file nocompile.gni=file://tools/nocompile/OWNERS diff --git a/build/OWNERS.setnoparent b/build/OWNERS.setnoparent index 260254e..98f3e9a 100644 --- a/build/OWNERS.setnoparent +++ b/build/OWNERS.setnoparent @@ -10,7 +10,7 @@ file://third_party/OWNERS # Security reviews file://build/fuchsia/SECURITY_OWNERS file://chromeos/SECURITY_OWNERS -file://content/browser/SITE_ISOLATION_OWNERS +file://content/browser/CHILD_PROCESS_SECURITY_POLICY_OWNERS file://ipc/SECURITY_OWNERS file://net/base/SECURITY_OWNERS file://sandbox/linux/OWNERS @@ -40,12 +40,14 @@ file://extensions/common/api/API_OWNERS # we don't want them. file://ui/android/java/res/LAYOUT_OWNERS -# Updating policy_templates.json can have drastic effects for systems depending +# Enterprise policies +# Updating policy templates can have drastic effects for systems depending # on policy definitions (for example, Google's cloud management tools for # Chrome and Chrome OS). # The rules are documented at: # https://sites.google.com/a/chromium.org/dev/developers/how-tos/enterprise/adding-new-policies file://components/policy/ENTERPRISE_POLICY_OWNERS +file://components/policy/resources/templates/OWNERS # This restriction is in place due to the complicated compliance regulations # around this code. @@ -74,7 +76,7 @@ file://infra/config/groups/sheriff-rotations/CHROMIUM_OWNERS # completed manually. file://third_party/blink/common/origin_trials/OT_OWNERS -# New notifiers added to //ash/constants/notifier_catalogs.h and +# New notifiers added to //ash/constants/notifier_catalogs.h and # //ash/constants/quick_settings_catalogs.h should be reviewed # by //ash/system owners to ensure that the correct notifier is being used. file://ash/system/OWNERS diff --git a/build/PRESUBMIT.py b/build/PRESUBMIT.py index fba4d32..a74917b 100644 --- a/build/PRESUBMIT.py +++ b/build/PRESUBMIT.py @@ -4,10 +4,6 @@ PRESUBMIT_VERSION = '2.0.0' -# This line is 'magic' in that git-cl looks for it to decide whether to -# use Python3 instead of Python2 when running the code in this file. -USE_PYTHON3 = True - import textwrap @@ -17,6 +13,9 @@ def CheckNoBadDeps(input_api, output_api): r'(.+/)?BUILD\.gn', r'.+\.gni', ] + exclude_file_patterns = [ + r'build/rust/tests', + ] blocklist_pattern = input_api.re.compile(r'^[^#]*"//(?!build).+?/.*"') allowlist_pattern = input_api.re.compile(r'^[^#]*"//third_party/junit') @@ -31,7 +30,8 @@ def CheckNoBadDeps(input_api, output_api): def FilterFile(affected_file): return input_api.FilterSourceFile(affected_file, - files_to_check=build_file_patterns) + files_to_check=build_file_patterns, + files_to_skip=exclude_file_patterns) problems = [] for f in input_api.AffectedSourceFiles(FilterFile): @@ -52,6 +52,4 @@ def CheckPythonTests(input_api, output_api): input_api, output_api, input_api.PresubmitLocalPath(), - files_to_check=[r'.+_(?:unit)?test\.py$'], - run_on_python2=False, - run_on_python3=True)) + files_to_check=[r'.+_(?:unit)?test\.py$'])) diff --git a/build/PRESUBMIT_test.py b/build/PRESUBMIT_test.py index c5065f4..c39c19c 100755 --- a/build/PRESUBMIT_test.py +++ b/build/PRESUBMIT_test.py @@ -14,7 +14,6 @@ from PRESUBMIT_test_mocks import MockAffectedFile from PRESUBMIT_test_mocks import MockInputApi, MockOutputApi -USE_PYTHON3 = True def _fails_deps_check(line, filename='BUILD.gn'): diff --git a/build/action_helpers.py b/build/action_helpers.py new file mode 100644 index 0000000..046a292 --- /dev/null +++ b/build/action_helpers.py @@ -0,0 +1,126 @@ +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Helper functions useful when writing scripts used by action() targets.""" + +import contextlib +import filecmp +import os +import pathlib +import posixpath +import shutil +import tempfile + +import gn_helpers + + +@contextlib.contextmanager +def atomic_output(path, mode='w+b', only_if_changed=True): + """Prevent half-written files and dirty mtimes for unchanged files. + + Args: + path: Path to the final output file, which will be written atomically. + mode: The mode to open the file in (str). + only_if_changed: Whether to maintain the mtime if the file has not changed. + Returns: + A Context Manager that yields a NamedTemporaryFile instance. On exit, the + manager will check if the file contents is different from the destination + and if so, move it into place. + + Example: + with action_helpers.atomic_output(output_path) as tmp_file: + subprocess.check_call(['prog', '--output', tmp_file.name]) + """ + # Create in same directory to ensure same filesystem when moving. + dirname = os.path.dirname(path) or '.' + os.makedirs(dirname, exist_ok=True) + with tempfile.NamedTemporaryFile(mode, + suffix=os.path.basename(path), + dir=dirname, + delete=False) as f: + try: + yield f + + # File should be closed before comparison/move. + f.close() + if not (only_if_changed and os.path.exists(path) + and filecmp.cmp(f.name, path)): + shutil.move(f.name, path) + finally: + f.close() + if os.path.exists(f.name): + os.unlink(f.name) + + +def add_depfile_arg(parser): + if hasattr(parser, 'add_option'): + func = parser.add_option + else: + func = parser.add_argument + func('--depfile', help='Path to depfile (refer to "gn help depfile")') + + +def write_depfile(depfile_path, first_gn_output, inputs=None): + """Writes a ninja depfile. + + See notes about how to use depfiles in //build/docs/writing_gn_templates.md. + + Args: + depfile_path: Path to file to write. + first_gn_output: Path of first entry in action's outputs. + inputs: List of inputs to add to depfile. + """ + assert depfile_path != first_gn_output # http://crbug.com/646165 + assert not isinstance(inputs, str) # Easy mistake to make + + def _process_path(path): + assert not os.path.isabs(path), f'Found abs path in depfile: {path}' + if os.path.sep != posixpath.sep: + path = str(pathlib.Path(path).as_posix()) + assert '\\' not in path, f'Found \\ in depfile: {path}' + return path.replace(' ', '\\ ') + + sb = [] + sb.append(_process_path(first_gn_output)) + if inputs: + # Sort and uniquify to ensure file is hermetic. + # One path per line to keep it human readable. + sb.append(': \\\n ') + sb.append(' \\\n '.join(sorted(_process_path(p) for p in set(inputs)))) + else: + sb.append(': ') + sb.append('\n') + + path = pathlib.Path(depfile_path) + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(''.join(sb)) + + +def parse_gn_list(value): + """Converts a "GN-list" command-line parameter into a list. + + Conversions handled: + * None -> [] + * '' -> [] + * 'asdf' -> ['asdf'] + * '["a", "b"]' -> ['a', 'b'] + * ['["a", "b"]', 'c'] -> ['a', 'b', 'c'] (action='append') + + This allows passing args like: + gn_list = [ "one", "two", "three" ] + args = [ "--items=$gn_list" ] + """ + # Convert None to []. + if not value: + return [] + # Convert a list of GN lists to a flattened list. + if isinstance(value, list): + ret = [] + for arg in value: + ret.extend(parse_gn_list(arg)) + return ret + # Convert normal GN list. + if value.startswith('['): + return gn_helpers.GNValueParser(value).ParseList() + # Convert a single string value to a list. + return [value] diff --git a/build/action_helpers_unittest.py b/build/action_helpers_unittest.py new file mode 100755 index 0000000..6a9f908 --- /dev/null +++ b/build/action_helpers_unittest.py @@ -0,0 +1,87 @@ +#!/usr/bin/env python3 +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import pathlib +import shutil +import sys +import tempfile +import time +import unittest + +import action_helpers + + +class ActionHelpersTest(unittest.TestCase): + def test_atomic_output(self): + tmp_file = pathlib.Path(tempfile.mktemp()) + tmp_file.write_text('test') + try: + # Test that same contents does not change mtime. + orig_mtime = os.path.getmtime(tmp_file) + with action_helpers.atomic_output(str(tmp_file), 'wt') as af: + time.sleep(.01) + af.write('test') + + self.assertEqual(os.path.getmtime(tmp_file), orig_mtime) + + # Test that contents is written. + with action_helpers.atomic_output(str(tmp_file), 'wt') as af: + af.write('test2') + self.assertEqual(tmp_file.read_text(), 'test2') + self.assertNotEqual(os.path.getmtime(tmp_file), orig_mtime) + finally: + tmp_file.unlink() + + def test_parse_gn_list(self): + def test(value, expected): + self.assertEqual(action_helpers.parse_gn_list(value), expected) + + test(None, []) + test('', []) + test('asdf', ['asdf']) + test('["one"]', ['one']) + test(['["one"]', '["two"]'], ['one', 'two']) + test(['["one", "two"]', '["three"]'], ['one', 'two', 'three']) + + def test_write_depfile(self): + tmp_file = pathlib.Path(tempfile.mktemp()) + try: + + def capture_output(inputs): + action_helpers.write_depfile(str(tmp_file), 'output', inputs) + return tmp_file.read_text() + + self.assertEqual(capture_output(None), 'output: \n') + self.assertEqual(capture_output([]), 'output: \n') + self.assertEqual(capture_output(['a']), 'output: \\\n a\n') + # Check sorted. + self.assertEqual(capture_output(['b', 'a']), 'output: \\\n a \\\n b\n') + # Check converts to forward slashes. + self.assertEqual(capture_output(['a', os.path.join('b', 'c')]), + 'output: \\\n a \\\n b/c\n') + + # Arg should be a list. + with self.assertRaises(AssertionError): + capture_output('a') + + # Do not use depfile itself as an output. + with self.assertRaises(AssertionError): + capture_output([str(tmp_file)]) + + # Do not use absolute paths. + with self.assertRaises(AssertionError): + capture_output([os.path.sep + 'foo']) + + # Do not use absolute paths (output path). + with self.assertRaises(AssertionError): + action_helpers.write_depfile(str(tmp_file), '/output', []) + + finally: + tmp_file.unlink() + + +if __name__ == '__main__': + unittest.main() diff --git a/build/args/README.txt b/build/args/README.txt index 825bf64..b82fb04 100644 --- a/build/args/README.txt +++ b/build/args/README.txt @@ -1,10 +1,6 @@ This directory is here to hold .gni files that contain sets of GN build arguments for given configurations. -(Currently this directory is empty because we removed the only thing here, but -this has come up several times so I'm confident we'll need this again. If this -directory is still empty by 2017, feel free to delete it. --Brett) - Some projects or bots may have build configurations with specific combinations of flags. Rather than making a new global flag for your specific project and adding it all over the build to each arg it should affect, you can add a .gni diff --git a/build/build_config.h b/build/build_config.h index 33a2769..1b38c7e 100644 --- a/build/build_config.h +++ b/build/build_config.h @@ -33,13 +33,13 @@ // COMPILER_MSVC / COMPILER_GCC // // Processor: -// ARCH_CPU_ARM64 / ARCH_CPU_ARMEL / ARCH_CPU_LOONG32 / ARCH_CPU_LOONG64 / -// ARCH_CPU_MIPS / ARCH_CPU_MIPS64 / ARCH_CPU_MIPS64EL / ARCH_CPU_MIPSEL / -// ARCH_CPU_PPC64 / ARCH_CPU_S390 / ARCH_CPU_S390X / ARCH_CPU_X86 / -// ARCH_CPU_X86_64 / ARCH_CPU_RISCV64 +// ARCH_CPU_ARM64 / ARCH_CPU_ARMEL / ARCH_CPU_LOONGARCH32 / +// ARCH_CPU_LOONGARCH64 / ARCH_CPU_MIPS / ARCH_CPU_MIPS64 / +// ARCH_CPU_MIPS64EL / ARCH_CPU_MIPSEL / ARCH_CPU_PPC64 / ARCH_CPU_S390 / +// ARCH_CPU_S390X / ARCH_CPU_X86 / ARCH_CPU_X86_64 / ARCH_CPU_RISCV64 // Processor family: // ARCH_CPU_ARM_FAMILY: ARMEL or ARM64 -// ARCH_CPU_LOONG_FAMILY: LOONG32 or LOONG64 +// ARCH_CPU_LOONGARCH_FAMILY: LOONGARCH32 or LOONGARCH64 // ARCH_CPU_MIPS_FAMILY: MIPS64EL or MIPSEL or MIPS64 or MIPS // ARCH_CPU_PPC64_FAMILY: PPC64 // ARCH_CPU_S390_FAMILY: S390 or S390X @@ -337,16 +337,16 @@ #define ARCH_CPU_32_BITS 1 #define ARCH_CPU_BIG_ENDIAN 1 #endif -#elif defined(__loongarch32) -#define ARCH_CPU_LOONG_FAMILY 1 -#define ARCH_CPU_LOONG32 1 -#define ARCH_CPU_32_BITS 1 +#elif defined(__loongarch__) +#define ARCH_CPU_LOONGARCH_FAMILY 1 #define ARCH_CPU_LITTLE_ENDIAN 1 -#elif defined(__loongarch64) -#define ARCH_CPU_LOONG_FAMILY 1 -#define ARCH_CPU_LOONG64 1 +#if __loongarch_grlen == 64 +#define ARCH_CPU_LOONGARCH64 1 #define ARCH_CPU_64_BITS 1 -#define ARCH_CPU_LITTLE_ENDIAN 1 +#else +#define ARCH_CPU_LOONGARCH32 1 +#define ARCH_CPU_32_BITS 1 +#endif #elif defined(__riscv) && (__riscv_xlen == 64) #define ARCH_CPU_RISCV_FAMILY 1 #define ARCH_CPU_RISCV64 1 diff --git a/build/check_gn_headers_whitelist.txt b/build/check_gn_headers_whitelist.txt index e46a598..dfefd7d 100644 --- a/build/check_gn_headers_whitelist.txt +++ b/build/check_gn_headers_whitelist.txt @@ -20,7 +20,6 @@ cc/layers/performance_properties.h chrome/browser/android/android_theme_resources.h chrome/browser/android/resource_id.h chrome/browser/ash/login/signin/oauth2_login_manager.h -chrome/browser/ash/login/signin/oauth2_login_verifier.h chrome/browser/ash/login/signin/oauth2_token_fetcher.h chrome/browser/ash/profiles/profile_helper.h chrome/browser/ash/settings/cros_settings.h @@ -54,8 +53,6 @@ chrome/install_static/install_modes.h chrome/install_static/install_util.h chrome/install_static/test/scoped_install_details.h chrome/installer/util/google_update_settings.h -components/browser_watcher/features.h -components/browser_watcher/stability_paths.h components/cdm/browser/cdm_message_filter_android.h components/device_event_log/device_event_log_export.h components/login/login_export.h diff --git a/build/cipd/cipd.gni b/build/cipd/cipd.gni new file mode 100644 index 0000000..852adef --- /dev/null +++ b/build/cipd/cipd.gni @@ -0,0 +1,140 @@ +# Copyright 2020 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# Build targets for constructing CIPD packages. +# +# Prepares a CIPD archive and generates a manifest file. +# +# TODO(crbug.com/1042819): Add support for including directories. +# +# Parameters: +# package_definition_yaml: CIPD package definition filename. "cipd.yaml" +# if unspecified. +# package: The path where the package will be located inside the CIPD +# repository. +# description: Sets the "description" field in CIPD package definition. +# install_mode: String, should be either "symlink" or "copy". Defaults to +# "symlink". +# deps: A list of targets to build prior to copying files. +# sources: A list of files to copy into the staging root. +# source_directories: A list of directories to include in the package. Should +# only be used when listing out all the files (in a given +# directory) in |sources| is unfeasible. +# +# Example: +# cipd_package_definition("chromedriver") { +# package = "path/to/cipd/package" +# description = "Prebuilt test binary." +# install_mode = "copy" +# deps = [ "//path/to:test_binary_target" ] +# sources = [ "//path/to:test_binary_file" ] +# } +# +template("cipd_package_definition") { + forward_variables_from(invoker, + [ + "deps", + "data", + "source_directories", + "data_deps", + "sources", + "testonly", + ]) + + assert(defined(sources) || defined(source_directories), + "At least one sources input must be specified.") + + _install_mode = "symlink" + if (defined(invoker.install_mode)) { + _install_mode = invoker.install_mode + } + assert(_install_mode == "copy" || _install_mode == "symlink", + "\"install_mode\" arg should be either \"copy\" or \"symlink\".") + + _cipd_definition_yaml = "cipd.yaml" + if (defined(invoker.package_definition_yaml)) { + _cipd_definition_yaml = invoker.package_definition_yaml + } + + _package_staging_dir = "${target_gen_dir}/${target_name}" + + _yaml_contents = [ + "package: ${invoker.package}", + "description: ${invoker.description}", + "root: " + rebase_path(_package_staging_dir), + "install_mode: ${_install_mode}", + "data:", + ] + + if (defined(sources)) { + foreach(source, sources) { + _yaml_contents += [ " - file: " + get_path_info(source, "file") ] + } + copy(target_name) { + outputs = [ "${_package_staging_dir}/{{source_file_part}}" ] + } + } + + if (defined(source_directories)) { + foreach(directory, source_directories) { + _yaml_contents += [ " - dir: " + directory ] + } + } + + write_file("${_package_staging_dir}/${_cipd_definition_yaml}", _yaml_contents) +} + +# Create a cipd file based on inputs and FILES.cfg config. Most of the arguments +# are similar with |cipd_package_definition| above. +# +# Additional parameters: +# +# package_definition_yaml: The output yaml file. Default is +# ${target_name}_cipd.yaml. +# files_file: The file defines what files and directories to include. +# Example: //tools/build/chromeos/FILES.cfg. +# buildtype: str, required. It can be "dev" or "official". +# Only when the file has the same buildtype, it will be included. +# arch: str, required. It can be "32bit", "64bit", "arm". +# +# Example: +# cipd_package_definition_by_file("chrome_cipd") { +# package = "path/to/cipd/package" +# description = "Prebuilt test binary." +# install_mode = "copy" +# files_file = "//chrome/tools/build/chromeos/FILES.json" +# buildtype = "dev" +# arch = "64bit" +# deps = [ "//path/to:test_binary_target" ] +# } +template("cipd_package_definition_by_file") { + forward_variables_from(invoker, + [ + "deps", + "data", + "data_deps", + "sources", + "testonly", + ]) + _output_yaml_filename = "${target_name}_cipd.yaml" + if (defined(invoker.package_definition_yaml)) { + _output_yaml_filename = invoker.package_definition_yaml + } + action(target_name) { + script = "//build/cipd/cipd_from_file.py" + inputs = [ invoker.files_file ] + args = [ + "--description=" + invoker.description, + "--buildtype=" + invoker.buildtype, + "--arch=" + invoker.arch, + "--files_file=" + rebase_path(invoker.files_file, root_build_dir), + "--package=" + invoker.package, + "--install_mode=" + invoker.install_mode, + "--output_yaml_file=" + + rebase_path("${root_out_dir}/" + _output_yaml_filename, + root_build_dir), + ] + outputs = [ "${root_out_dir}/" + _output_yaml_filename ] + } +} diff --git a/build/cipd/cipd_from_file.py b/build/cipd/cipd_from_file.py new file mode 100755 index 0000000..979b2b5 --- /dev/null +++ b/build/cipd/cipd_from_file.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python3 +# Copyright 2021 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Script to generate yaml file based on FILES.cfg.""" + +import argparse +import os + + +def _ParseFilesCfg(files_file): + """Return the dictionary of archive file info read from the given file.""" + if not os.path.exists(files_file): + raise IOError('Files list does not exist (%s).' % files_file) + exec_globals = {'__builtins__': None} + + exec(open(files_file).read(), exec_globals) + return exec_globals['FILES'] + + +def _Process(args): + yaml_content = ('package: ' + args.package + '\ndescription: ' + + args.description + '\ninstall_mode: ' + args.install_mode + + '\ndata:\n') + fileobj = _ParseFilesCfg(args.files_file) + for item in fileobj: + if 'buildtype' in item: + if args.buildtype not in item['buildtype']: + continue + if 'arch' in item: + if args.arch not in item['arch']: + continue + if 'type' in item and item['type'] == 'folder': + yaml_content += ' - dir: ' + item['filename'] + '\n' + else: + yaml_content += ' - file: ' + item['filename'] + '\n' + + with open(args.output_yaml_file, 'w') as f: + f.write(yaml_content) + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('--output_yaml_file', help='File to create.') + parser.add_argument( + '--package', + help='The path where the package will be located inside the CIPD\ + repository.') + parser.add_argument( + '--description', + help='Sets the "description" field in CIPD package definition.') + parser.add_argument('--install_mode', + help='String, should be either "symlink" or "copy".') + parser.add_argument('--files_file', + help='FILES.cfg describes what files to include.') + parser.add_argument('--buildtype', help='buildtype for FILES.cfg.') + parser.add_argument('--arch', help='arch for FILES.cfg') + + args = parser.parse_args() + + _Process(args) + + +if __name__ == '__main__': + main() diff --git a/build/clobber_unittest.py b/build/clobber_unittest.py new file mode 100755 index 0000000..d38c447 --- /dev/null +++ b/build/clobber_unittest.py @@ -0,0 +1,148 @@ +#!/usr/bin/env python3 +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import pathlib +import shutil +import sys +import tempfile +import textwrap +import unittest +from unittest import mock + +import clobber + + +class TestExtractBuildCommand(unittest.TestCase): + def setUp(self): + self.build_ninja_file, self.build_ninja_path = tempfile.mkstemp(text=True) + + def tearDown(self): + os.close(self.build_ninja_file) + os.remove(self.build_ninja_path) + + def test_normal_extraction(self): + build_ninja_file_contents = textwrap.dedent(""" + ninja_required_version = 1.7.2 + + rule gn + command = ../../buildtools/gn --root=../.. -q --regeneration gen . + pool = console + description = Regenerating ninja files + + build build.ninja.stamp: gn + generator = 1 + depfile = build.ninja.d + + build build.ninja: phony build.ninja.stamp + generator = 1 + + pool build_toolchain_action_pool + depth = 72 + + pool build_toolchain_link_pool + depth = 23 + + subninja toolchain.ninja + subninja clang_newlib_x64/toolchain.ninja + subninja glibc_x64/toolchain.ninja + subninja irt_x64/toolchain.ninja + subninja nacl_bootstrap_x64/toolchain.ninja + subninja newlib_pnacl/toolchain.ninja + + build blink_python_tests: phony obj/blink_python_tests.stamp + build blink_tests: phony obj/blink_tests.stamp + + default all + """) # Based off of a standard linux build dir. + with open(self.build_ninja_path, 'w') as f: + f.write(build_ninja_file_contents) + + expected_build_ninja_file_contents = textwrap.dedent(""" + ninja_required_version = 1.7.2 + + rule gn + command = ../../buildtools/gn --root=../.. -q --regeneration gen . + pool = console + description = Regenerating ninja files + + build build.ninja.stamp: gn + generator = 1 + depfile = build.ninja.d + + build build.ninja: phony build.ninja.stamp + generator = 1 + + """) + + self.assertEqual(clobber.extract_gn_build_commands(self.build_ninja_path), + expected_build_ninja_file_contents) + + def test_unexpected_format(self): + # No "build build.ninja:" line should make it return an empty string. + build_ninja_file_contents = textwrap.dedent(""" + ninja_required_version = 1.7.2 + + rule gn + command = ../../buildtools/gn --root=../.. -q --regeneration gen . + pool = console + description = Regenerating ninja files + + subninja toolchain.ninja + + build blink_python_tests: phony obj/blink_python_tests.stamp + build blink_tests: phony obj/blink_tests.stamp + + """) + with open(self.build_ninja_path, 'w') as f: + f.write(build_ninja_file_contents) + + self.assertEqual(clobber.extract_gn_build_commands(self.build_ninja_path), + '') + + +class TestDelete(unittest.TestCase): + def setUp(self): + self.build_dir = tempfile.mkdtemp() + + pathlib.Path(os.path.join(self.build_dir, 'build.ninja')).touch() + pathlib.Path(os.path.join(self.build_dir, 'build.ninja.d')).touch() + + def tearDown(self): + shutil.rmtree(self.build_dir) + + def test_delete_build_dir_full(self): + # Create a dummy file in the build dir and ensure it gets removed. + dummy_file = os.path.join(self.build_dir, 'dummy') + pathlib.Path(dummy_file).touch() + + clobber.delete_build_dir(self.build_dir) + + self.assertFalse(os.path.exists(dummy_file)) + + def test_delete_build_dir_fail(self): + # Make delete_dir() throw to ensure it's handled gracefully. + + with mock.patch('clobber._clean_dir', side_effect=OSError): + with self.assertRaises(OSError): + clobber.delete_build_dir(self.build_dir) + + @unittest.skipIf(sys.platform == 'win32', 'Symlinks are not allowed on Windows by default') + def test_delete_build_dir_link(self): + with tempfile.TemporaryDirectory() as tmpdir: + # create a symlink. + build_dir = os.path.join(tmpdir, 'link') + os.symlink(self.build_dir, build_dir) + + # create a dummy file. + dummy_file = os.path.join(build_dir, 'dummy') + pathlib.Path(dummy_file).touch() + clobber.delete_build_dir(build_dir) + + self.assertFalse(os.path.exists(dummy_file)) + + +if __name__ == '__main__': + unittest.main() diff --git a/build/config/BUILD.gn b/build/config/BUILD.gn index 35c9a62..53511ac 100644 --- a/build/config/BUILD.gn +++ b/build/config/BUILD.gn @@ -16,6 +16,7 @@ import("//build/config/ios/ios_sdk_overrides.gni") import("//build/config/mac/mac_sdk_overrides.gni") import("//build/config/pch.gni") +import("//build/config/rust.gni") import("//build/config/sanitizers/sanitizers.gni") import("//build/config/ui.gni") import("//build/toolchain/goma.gni") @@ -210,14 +211,9 @@ config("default_libs") { # linking can have run-time side effects, nothing should be listed here. libs = [] } else if (is_ios) { - # The libraries listed here will be specified for both the target and the - # host. Only the common ones should be listed here. - frameworks = [ - "CoreFoundation.framework", - "CoreGraphics.framework", - "CoreText.framework", - "Foundation.framework", - ] + # Targets should choose to explicitly link frameworks they require. Since + # linking can have run-time side effects, nothing should be listed here. + libs = [] } else if (is_linux || is_chromeos) { libs = [ "dl", @@ -261,29 +257,42 @@ group("common_deps") { public_deps += [ "//build/config/fuchsia:asan_runtime_library" ] } } + + if (is_win) { + # The CRT runtime is dynamically linked in component builds and needs to + # be present on bots that run exes or load DLLs. This also includes + # debugging DLLs in all builds. + data_deps = [ "//build/win:runtime_libs" ] + } } # Only the executable template in BUILDCONFIG.gn should reference this. group("executable_deps") { - public_deps = [ ":common_deps" ] - if (export_libcxxabi_from_executables) { - public_deps += [ "//buildtools/third_party/libc++abi" ] + if (!toolchain_for_rust_host_build_tools) { + public_deps = [ ":common_deps" ] + if (export_libcxxabi_from_executables) { + public_deps += [ "//buildtools/third_party/libc++abi" ] + } + public_configs = [ "//build/config/sanitizers:link_executable" ] } - public_configs = [ "//build/config/sanitizers:link_executable" ] } # Only the loadable_module template in BUILDCONFIG.gn should reference this. group("loadable_module_deps") { - public_deps = [ ":common_deps" ] + if (!toolchain_for_rust_host_build_tools) { + public_deps = [ ":common_deps" ] - public_configs = [ "//build/config/sanitizers:link_shared_library" ] + public_configs = [ "//build/config/sanitizers:link_shared_library" ] + } } # Only the shared_library template in BUILDCONFIG.gn should reference this. group("shared_library_deps") { - public_deps = [ ":common_deps" ] + if (!toolchain_for_rust_host_build_tools) { + public_deps = [ ":common_deps" ] - public_configs = [ "//build/config/sanitizers:link_shared_library" ] + public_configs = [ "//build/config/sanitizers:link_shared_library" ] + } } # Executable configs ----------------------------------------------------------- diff --git a/build/config/BUILDCONFIG.gn b/build/config/BUILDCONFIG.gn index 95a8c53..cab7285 100644 --- a/build/config/BUILDCONFIG.gn +++ b/build/config/BUILDCONFIG.gn @@ -363,6 +363,10 @@ if (is_win) { ] } +if (is_apple) { + default_compiler_configs += [ "//build/config/compiler:enable_arc" ] +} + if (is_posix) { if (current_os != "aix") { default_compiler_configs += @@ -396,11 +400,6 @@ if (is_debug) { # Static libraries and source sets use only the compiler ones. set_defaults("static_library") { configs = default_compiler_configs - - # For Rust, a static library involves linking in all dependencies, and it - # performs LTO. But since we will perform LTO in the C++ linker which - # consumes the library, we defer LTO from Rust into the linker. - configs += [ "//build/config/compiler:rust_defer_lto_to_linker" ] } set_defaults("source_set") { configs = default_compiler_configs @@ -421,8 +420,8 @@ if (is_win) { # that shouldn't use the windows subsystem. "//build/config/win:console", ] -} else if (is_mac) { - _linker_configs = [ "//build/config/mac:strip_all" ] +} else if (is_apple) { + _linker_configs = [ "//build/config/apple:strip_all" ] } else { _linker_configs = [] } @@ -438,6 +437,14 @@ if (is_win) { # if needed. default_executable_configs += [ "//build/config/win:cfi_linker" ] } +if (is_fuchsia) { + # Sometimes executables are linked by rustc passing a command line to + # clang++. It includes "-pie" which is pointless on Fuchsia. Suppress the + # resulting (fatal) warning. Unfortunately there's no way to do this only + # for binaries linked by rustc; gn does not make the distinction. + default_executable_configs += + [ "//build/config/fuchsia:rustc_no_pie_warning" ] +} set_defaults("executable") { configs = default_executable_configs @@ -460,6 +467,14 @@ if (is_android) { default_shared_library_configs += [ "//build/config/android:hide_all_but_jni_onload" ] } +if (is_fuchsia) { + # Sometimes shared libraries are linked by rustc passing a command line to + # clang++. It includes "-pie" which is pointless on Fuchsia. Suppress the + # resulting (fatal) warning. Unfortunately there's no way to do this only + # for binaries linked by rustc; gn does not make the distinction. + default_shared_library_configs += + [ "//build/config/fuchsia:rustc_no_pie_warning" ] +} set_defaults("shared_library") { configs = default_shared_library_configs } diff --git a/build/config/android/BUILD.gn b/build/config/android/BUILD.gn index 69341ce..e7c18c0 100644 --- a/build/config/android/BUILD.gn +++ b/build/config/android/BUILD.gn @@ -1,8 +1,8 @@ -# Copyright 2014 The Chromium Authors. All rights reserved. +# Copyright 2014 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import("//build/config/android/config.gni") +import("//build/config/android/rules.gni") import("//build/config/c++/c++.gni") import("//build/config/compiler/compiler.gni") import("//build/config/sanitizers/sanitizers.gni") @@ -33,13 +33,6 @@ config("compiler") { "ANDROID_NDK_VERSION_ROLL=${android_ndk_version}_1", ] - if (current_cpu == "mips64el") { - cflags += [ - # Have to force IAS for mips64. - "-fintegrated-as", - ] - } - ldflags = [ # Don't allow visible symbols from libraries that contain # assembly code with symbols that aren't hidden properly. @@ -57,15 +50,13 @@ config("compiler") { if (current_cpu == "arm64") { if (arm_control_flow_integrity == "standard") { cflags += [ "-mbranch-protection=standard" ] + rustflags = [ "-Zbranch-protection=bti" ] } else if (arm_control_flow_integrity == "pac") { cflags += [ "-mbranch-protection=pac-ret" ] + rustflags = [ "-Zbranch-protection=pac-ret" ] } } - # Instead of using an unwind lib from the toolchain, - # buildtools/third_party/libunwind will be built and used directly. - ldflags += [ "--unwindlib=none" ] - # $compile_api_level corresponds to the API level used for the sysroot path # calculation in //build/config/android/config.gni if (android_64bit_target_cpu) { @@ -101,16 +92,6 @@ config("runtime_library") { if (current_cpu == "arm" && arm_version == 6) { libs += [ "atomic" ] } - - if (current_cpu == "mipsel") { - libs += [ "atomic" ] - } - - # TODO(jdduke) Re-enable on mips after resolving linking - # issues with libc++ (crbug.com/456380). - if (current_cpu != "mipsel" && current_cpu != "mips64el") { - ldflags += [ "-Wl,--warn-shared-textrel" ] - } } config("hide_all_but_jni_onload") { @@ -129,6 +110,27 @@ config("lld_pack_relocations") { ldflags = [ "-Wl,--pack-dyn-relocs=android" ] } +config("lld_relr_relocations") { + # RELR supported API 30+, but supported 28+ with --use-android-relr-tags. + # https://android.googlesource.com/platform/bionic/+/master/android-changes-for-ndk-developers.md#relative-relocations-relr + ldflags = [ "-Wl,--pack-dyn-relocs=relr,--use-android-relr-tags" ] +} + +config("lld_branch_target_hardening") { + # Config opts a shared library into BTI linker hardening. This + # is an opt-in config (rather than default-enabled) to avoid + # interfering with the V8 CFI bots (crbug.com/1334614). + if (current_cpu == "arm64") { + if (arm_control_flow_integrity == "standard") { + # Linking objects without GNU_PROPERTY_AARCH64_FEATURE_1_BTI + # in their .gnu.note section implicitly results in the final + # binary losing Branch Target Identification (BTI) support. + # Issue a warning if this happens. + ldflags = [ "-Wl,-z,force-bti" ] + } + } +} + # Used for instrumented build to generate the orderfile. config("default_orderfile_instrumentation") { if (use_order_profiling) { @@ -141,6 +143,10 @@ config("default_orderfile_instrumentation") { } } +config("jni_include_dir") { + include_dirs = [ jni_headers_dir ] +} + if (current_toolchain == default_toolchain) { pool("goma_javac_pool") { # Override action_pool when goma is enabled for javac. diff --git a/build/config/android/abi.gni b/build/config/android/abi.gni index 43c62b1..1a082cf 100644 --- a/build/config/android/abi.gni +++ b/build/config/android/abi.gni @@ -30,8 +30,8 @@ declare_args() { # Build additional browser splits with HWASAN instrumentation enabled. build_hwasan_splits = false - # *For CQ puposes only* Leads to non-working APKs. - # Forces all APKs/bundles to be 64-bit only to improve build speed in the CQ + # This configuration has minimal coverage. + # Forces all APKs/bundles to be 64-bit only to improve build speed # (no need to also build 32-bit library). skip_secondary_abi_for_cq = false } @@ -69,11 +69,17 @@ if (current_cpu == "x86") { # Place holder for mips64 support, not tested. android_abi_target = "mips64el-linux-android" +} else if (current_cpu == "riscv64") { + android_app_abi = "riscv64" + + # Place holder for riscv64 support, not tested. + android_abi_target = "riscv64-linux-android" } else { assert(false, "Unknown Android ABI: " + current_cpu) } -if (target_cpu == "arm64" || target_cpu == "x64" || target_cpu == "mips64el") { +if (target_cpu == "arm64" || target_cpu == "x64" || target_cpu == "mips64el" || + target_cpu == "riscv64") { android_64bit_target_cpu = true } else if (target_cpu == "arm" || target_cpu == "x86" || target_cpu == "mipsel") { @@ -82,8 +88,10 @@ if (target_cpu == "arm64" || target_cpu == "x64" || target_cpu == "mips64el") { assert(false, "Unknown target CPU: $target_cpu") } -# Intentionally do not define android_app_secondary_abi_cpu and -# android_app_secondary_abi for 32-bit target_cpu, since they are not used. +# Do not define android_secondary_abi_cpu or android_app_secondary_abi for +# target_cpu's that are 32-bit-only or 64-bit-only, as they are not used. The +# presence of this variable may be used in conjunction with android_64bit_target_cpu +# to identify target_cpu's that are 32-bit-only or 64-bit-only. if (target_cpu == "arm64") { android_secondary_abi_cpu = "arm" android_app_secondary_abi = "armeabi-v7a" diff --git a/build/config/android/android_nocompile.gni b/build/config/android/android_nocompile.gni index 159ebd5..0b3f517 100644 --- a/build/config/android/android_nocompile.gni +++ b/build/config/android/android_nocompile.gni @@ -1,4 +1,4 @@ -# Copyright 2020 The Chromium Authors. All rights reserved. +# Copyright 2020 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. diff --git a/build/config/android/config.gni b/build/config/android/config.gni index 4732145..0a4ea11 100644 --- a/build/config/android/config.gni +++ b/build/config/android/config.gni @@ -1,15 +1,30 @@ -# Copyright 2014 The Chromium Authors. All rights reserved. +# Copyright 2014 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # This file contains common system config stuff for the Android build. +# Some arguments that are needed across all builds that import this file, for +# example by is_robolectric. +declare_args() { + # Build incremental targets whenever possible. + # See //build/android/incremental_install/README.md for more details. + incremental_install = false +} + +declare_args() { + # Java debug on Android. Having this on enables multidexing, and turning it + # off will enable proguard. + is_java_debug = is_debug || incremental_install +} + # NOTE: Because Chrome OS builds may depend on targets built with the Android # toolchain, this GNI file may be read and processed from within Chrome OS # toolchains. Checking |is_android| here would therefore be too restrictive. if (is_android || is_chromeos) { import("//build/config/android/channel.gni") import("//build/config/chromecast_build.gni") + import("//build/config/clang/clang.gni") import("//build/config/dcheck_always_on.gni") import("//build_overrides/build.gni") import("abi.gni") @@ -31,25 +46,24 @@ if (is_android || is_chromeos) { } } - has_chrome_android_internal = - exec_script("//build/dir_exists.py", - [ rebase_path("//clank", root_build_dir) ], - "string") == "True" - # We are using a separate declare_args block for only this argument so that # we can decide if we have to pull in definitions from the internal config # early. declare_args() { # Enables using the internal Chrome for Android repository. The default - # value depends on whether the repository is available, and if it's not but - # this argument is manually set to True, the generation will fail. - # The main purpose of this argument is to avoid having to maintain 2 - # repositories to support both public only and internal builds. - enable_chrome_android_internal = has_chrome_android_internal + # is set from gclient vars, with target_os needed for chromeos. + # Can be set to false to disable all internal android things. + enable_chrome_android_internal = + build_with_chromium && checkout_src_internal && target_os == "android" + + # Experimental new flag for the build system to automatically attempt to + # fix missing java deps. This should always be false on bots so they do not + # succeed when there are build errors. Devs can override this in args.gn. + auto_add_missing_java_deps = false # The default to use for android:minSdkVersion for targets that do # not explicitly set it. - default_min_sdk_version = 23 + default_min_sdk_version = 24 # Static analysis can be either "on" or "off" or "build_server". This # controls how android lint, error-prone, bytecode checks are run. This @@ -73,17 +87,9 @@ if (is_android || is_chromeos) { assert(android_static_analysis == "on" || android_static_analysis == "off" || android_static_analysis == "build_server") - declare_args() { - # Android API level for 32 bits platforms - android32_ndk_api_level = default_min_sdk_version - - # Android API level for 64 bits platforms - if (default_min_sdk_version < 21) { - android64_ndk_api_level = 21 - } else { - android64_ndk_api_level = default_min_sdk_version - } - } + # This configuration has not bot coverage and has broken multiple times. + # Warn against it. + assert(!(enable_chrome_android_internal && skip_secondary_abi_for_cq)) if (enable_chrome_android_internal) { import("//clank/config.gni") @@ -96,19 +102,29 @@ if (is_android || is_chromeos) { } if (!defined(default_android_ndk_root)) { - default_android_ndk_root = "//third_party/android_ndk" - default_android_ndk_version = "r23" - default_android_ndk_major_version = 23 + default_android_ndk_root = "//third_party/android_toolchain/ndk" + default_android_ndk_version = "r25c" + default_android_ndk_major_version = 25 } else { assert(defined(default_android_ndk_version)) assert(defined(default_android_ndk_major_version)) } public_android_sdk_root = "//third_party/android_sdk/public" - if (android_sdk_release == "s") { + public_android_sdk_build_tools = + "${public_android_sdk_root}/build-tools/34.0.0" + public_android_sdk_version = "34" + if (android_sdk_release == "u") { + default_android_sdk_root = public_android_sdk_root + default_android_sdk_version = public_android_sdk_version + default_android_sdk_build_tools_version = "34.0.0" + public_android_sdk = true + } + + if (android_sdk_release == "tprivacysandbox") { default_android_sdk_root = public_android_sdk_root - default_android_sdk_version = "31" - default_android_sdk_build_tools_version = "31.0.0" + default_android_sdk_version = "TiramisuPrivacySandbox" + default_android_sdk_build_tools_version = "33.0.0" public_android_sdk = true } @@ -121,7 +137,7 @@ if (is_android || is_chromeos) { # Purposefully repeated so that downstream can change # default_android_sdk_root without changing lint version. default_lint_android_sdk_root = public_android_sdk_root - default_lint_android_sdk_version = 31 + default_lint_android_sdk_version = 34 } if (!defined(default_extras_android_sdk_root)) { @@ -140,31 +156,7 @@ if (is_android || is_chromeos) { # google_play_services_package contains the path where individual client # targets (e.g. google_play_services_base_java) are located. if (!defined(google_play_services_package)) { - if (is_chromecast && chromecast_branding != "public") { - google_play_services_package = "//chromecast/internal/android/prebuilt/google-play-services-first-party" - } else { - google_play_services_package = "//third_party/android_deps" - } - } - - if (!defined(dagger_java_target)) { - dagger_java_target = - "//third_party/android_deps:com_google_dagger_dagger_java" - } - - if (!defined(dagger_annotation_processor_target)) { - dagger_annotation_processor_target = - "//third_party/android_deps:com_google_dagger_dagger_compiler_java" - } - - if (!defined(guava_android_target)) { - guava_android_target = - "//third_party/android_deps:com_google_guava_guava_android_java" - } - - if (!defined(material_design_target)) { - material_design_target = - "//third_party/android_deps:com_google_android_material_material_java" + google_play_services_package = "//third_party/android_deps" } if (!defined(android_protoc_bin)) { @@ -187,6 +179,17 @@ if (is_android || is_chromeos) { android_ndk_version = default_android_ndk_version android_ndk_major_version = default_android_ndk_major_version + # Android API level for 32 bits platforms + android32_ndk_api_level = default_min_sdk_version + + # Android API level for 64 bits platforms + android64_ndk_api_level = default_min_sdk_version + + if (default_min_sdk_version < 21) { + # Android did not support 64 bit before API 21. + android64_ndk_api_level = 21 + } + android_sdk_root = default_android_sdk_root android_sdk_version = default_android_sdk_version android_sdk_build_tools_version = default_android_sdk_build_tools_version @@ -218,20 +221,12 @@ if (is_android || is_chromeos) { # The password for the keystore to use for signing builds. android_keystore_password = default_android_keystore_password - # Java debug on Android. Having this on enables multidexing, and turning it - # off will enable proguard. - is_java_debug = is_debug - # Mark APKs as android:debuggable="true". debuggable_apks = !is_official_build # Set to false to disable the Errorprone compiler. use_errorprone_java_compiler = android_static_analysis != "off" - # Build incremental targets whenever possible. - # See //build/android/incremental_install/README.md for more details. - incremental_install = false - # When true, updates all android_aar_prebuilt() .info files during gn gen. # Refer to android_aar_prebuilt() for more details. update_android_aar_prebuilts = false @@ -257,6 +252,23 @@ if (is_android || is_chromeos) { # support mapping these names. enable_arsc_obfuscation = true + # Controls whether |strip_unused_resources| is respected. Useful when trying + # to analyze APKs using tools that do not support missing resources from + # resources.arsc. + enable_unused_resource_stripping = true + + # Controls whether specifying |art_profile_path| automatically adds a binary + # baseline profile to the APK/AAB. + # Currently disabled while bundletool does not support baseline profiles in + # non-base splits. + enable_baseline_profiles = false + + # Controls whether specifying |art_profile_path| automatically applies it as + # a startup profile to the APK/AAB. + # Currently disabled while R8 causes checkdiscard errors due to + # methods/classes not being inlined correctly. + enable_startup_profiles = false + # The target to use as the system WebView implementation. if (android_64bit_target_cpu && skip_secondary_abi_for_cq) { system_webview_apk_target = "//android_webview:system_webview_64_apk" @@ -283,13 +295,6 @@ if (is_android || is_chromeos) { # 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 - - # Enables Java library desugaring. - # This will cause an extra classes.dex file to appear in every apk. - enable_jdk_library_desugaring = true - # Enables trace event injection on Android views with bytecode rewriting. # This adds an additional step on android_app_bundle_module targets that # adds trace events to some methods in android.view.View subclasses. @@ -297,6 +302,9 @@ if (is_android || is_chromeos) { !is_java_debug && android_channel != "stable" } + assert(!incremental_install || is_java_debug, + "incremental_install=true && is_java_debug=false is not supported.") + # Host stuff ----------------------------------------------------------------- # Defines the name the Android build gives to the current host CPU @@ -348,17 +356,29 @@ if (is_android || is_chromeos) { android_prebuilt_arch = "android-arm64" } else if (current_cpu == "mips64el") { android_prebuilt_arch = "android-mips64" + } else if (current_cpu == "riscv64") { + # Place holder for riscv64 support, not tested. + android_prebuilt_arch = "android-riscv64" } else { assert(false, "Need android libgcc support for your target arch.") } android_toolchain_root = "$android_ndk_root/toolchains/llvm/prebuilt/${android_host_os}-${android_host_arch}" android_ndk_library_path = "$android_toolchain_root/lib64" - android_tool_prefix = "$android_toolchain_root/bin/llvm-" + + # Point to Chromium's LLVM for tooling. + android_tool_prefix = "$clang_base_path/bin/llvm-" android_readelf = "${android_tool_prefix}readobj" android_objcopy = "${android_tool_prefix}objcopy" android_gdbserver = "$android_ndk_root/prebuilt/$android_prebuilt_arch/gdbserver/gdbserver" android_sdk_tools_bundle_aapt2 = "${android_sdk_tools_bundle_aapt2_dir}/aapt2" + + # Actions that use java should add this as an input so that they are rebuilt + # when the JDK changes. + java_path_for_inputs = "//third_party/jdk/current/bin/java.chromium" + + # Toolchain used to create native libraries for robolectric_binary() targets. + robolectric_toolchain = "//build/toolchain/android:robolectric_$host_cpu" } diff --git a/build/config/android/create_unwind_table.gni b/build/config/android/create_unwind_table.gni index 0e553ea..92b7427 100644 --- a/build/config/android/create_unwind_table.gni +++ b/build/config/android/create_unwind_table.gni @@ -1,46 +1,50 @@ -# Copyright 2021 The Chromium Authors. All rights reserved. +# Copyright 2021 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import("//build/config/android/rules.gni") -template("unwind_table_asset_v2") { - _asset_path = "${target_out_dir}/${target_name}/unwind_cfi_32_v2" - _unwind_action = "${target_name}__create_unwind_table" +unwind_table_asset_v2_filename = "unwind_cfi_32_v2" - action(_unwind_action) { +_dump_syms_target = "//third_party/breakpad:dump_syms($host_toolchain)" +_dump_syms = get_label_info(_dump_syms_target, "root_out_dir") + "/dump_syms" +_readobj_path = "$clang_base_path/bin/llvm-readobj" + +template("unwind_table_v2") { + action(target_name) { forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + _output_path = + "$target_out_dir/$target_name/$unwind_table_asset_v2_filename" - _root_dir = "$root_out_dir" - if (defined(android_secondary_abi_cpu)) { - _root_dir = get_label_info(":foo($android_secondary_abi_toolchain)", - "root_out_dir") - } + # Strip the "lib" prefix, if present. Add and then remove a space because + # our ownly tool is "replace all". + _library_name = get_label_info(invoker.library_target, "name") + _library_name = + string_replace(string_replace(" $_library_name", " $shlib_prefix", ""), + " ", + "") + _library_path = "$root_out_dir/lib.unstripped/$shlib_prefix$_library_name$shlib_extension" script = "//build/android/gyp/create_unwind_table.py" - outputs = [ _asset_path ] - inputs = [ "${_root_dir}/lib.unstripped/$shlib_prefix${invoker.library_target}$shlib_extension" ] + outputs = [ _output_path ] + inputs = [ + _dump_syms, + _library_path, + ] + deps = [ + _dump_syms_target, + invoker.library_target, + ] args = [ "--input_path", - rebase_path( - "${_root_dir}/lib.unstripped/$shlib_prefix${invoker.library_target}$shlib_extension", - root_build_dir), + rebase_path(_library_path, root_build_dir), "--output_path", - rebase_path(_asset_path, root_build_dir), + rebase_path(_output_path, root_build_dir), "--dump_syms_path", - rebase_path("$root_out_dir/dump_syms", root_build_dir), + rebase_path(_dump_syms, root_build_dir), "--readobj_path", - rebase_path("$clang_base_path/bin/llvm-readobj", root_build_dir), + rebase_path(_readobj_path, root_build_dir), ] - deps = invoker.deps - deps += [ "//third_party/breakpad:dump_syms" ] - } - - android_assets(target_name) { - forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) - sources = [ _asset_path ] - disable_compression = true - deps = [ ":$_unwind_action" ] } } diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni index 93d1ce9..d6bcf85 100644 --- a/build/config/android/internal_rules.gni +++ b/build/config/android/internal_rules.gni @@ -1,11 +1,11 @@ -# Copyright 2014 The Chromium Authors. All rights reserved. +# Copyright 2014 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # Do not add any imports to non-//build directories here. # Some projects (e.g. V8) do not have non-build directories DEPS'ed in. +import("//build/config/android/channel.gni") import("//build/config/android/config.gni") -import("//build/config/android/copy_ex.gni") import("//build/config/compiler/compiler.gni") import("//build/config/compute_inputs_for_analyze.gni") import("//build/config/coverage/coverage.gni") @@ -20,6 +20,16 @@ if (current_toolchain == default_toolchain) { } assert(is_android) +default_android_sdk_dep = "//third_party/android_sdk:android_sdk_java" +_kotlin_stdlib_dep = "//third_party/kotlin_stdlib:kotlin_stdlib_java" +_jacoco_dep = "//third_party/jacoco:jacocoagent_java" +_jacoco_host_jar = + "$root_build_dir/lib.java/third_party/jacoco/jacocoagent_java.jar" +_robolectric_libs_dir = + rebase_path( + get_label_info("//:foo($robolectric_toolchain)", "root_out_dir"), + root_build_dir) + # The following _java_*_types variables capture all the existing target types. # If a new type is introduced, please add it to one of these categories, # preferring the more specific resource/library types. @@ -43,48 +53,58 @@ _java_leaf_types = [ "dist_jar", "java_annotation_processor", "java_binary", - "junit_binary", + "robolectric_binary", ] # All _java_resource_types targets must conform to these patterns. -_java_resource_patterns = [ - "*:*_assets", +java_resource_patterns = [ + "*_assets", + "*_grd", + "*_java_strings", + "*locale_paks", + "*_resources", + "*strings_java", "*android*:assets", "*:*_apk_*resources", "*android*:resources", - "*:*_resources", - "*:*_grd", - "*:*locale_paks", - "*:*_java_strings", - "*:*strings_java", ] # All _java_library_types targets must conform to these patterns. This includes # all non-leaf targets that use java_library_impl. -_java_library_patterns = [ - "*:*_java", - "*:*_javalib", - "*:*_java_*", # e.g. chrome_java_test_support +java_library_patterns = [ + "*_java", + "*_javalib", + "*javatests", + "*_bundle_module", + "*:*_java_*", # E.g. chrome_java_test_support "*:java", + "*/java", # to allow filtering without expanding labels //a/java -> + # //a/java:java "*:junit", + "*/junit", "*:junit_*", "*:*_junit_*", - "*:*javatests", - "*:*_bundle_module", - # TODO(agrieve): Rename targets below to match above patterns. + # TODO(agrieve): Rename to glue_java + "//android_webview/glue", "//android_webview/glue:glue", ] # These identify all non-leaf targets that have .build_config.json files. This is the # set of patterns that other targets can use to filter out java targets. -java_target_patterns = _java_library_patterns + _java_resource_patterns +java_target_patterns = java_library_patterns + java_resource_patterns _r8_path = "//third_party/r8/lib/r8.jar" + +# This duplication is intentional, so we avoid updating the r8.jar used by +# dexing unless necessary, since each update invalidates all incremental dexing +# and unnecessarily slows down all bots. +_d8_path = "//third_party/r8/d8/lib/r8.jar" _custom_d8_path = "//third_party/r8/custom_d8.jar" -_desugar_jdk_libs_json = "//third_party/r8/desugar_jdk_libs.json" -_desugar_jdk_libs_jar = "//third_party/android_deps/libs/com_android_tools_desugar_jdk_libs/desugar_jdk_libs-1.1.5.jar" -_desugar_jdk_libs_configuration_jar = "//third_party/android_deps/libs/com_android_tools_desugar_jdk_libs_configuration/desugar_jdk_libs_configuration-1.1.5.jar" +_default_lint_jar_path = "//third_party/android_build_tools/lint/lint.jar" +_custom_lint_jar_path = "//third_party/android_build_tools/lint/custom_lint.jar" +_manifest_merger_jar_path = + "//third_party/android_build_tools/manifest_merger/manifest-merger.jar" # Put the bug number in the target name so that false-positives have a hint in # the error message about why non-existent dependencies are there. @@ -105,16 +125,15 @@ template("write_build_config") { _target_label = get_label_info(":${_parent_invoker.target_name}", "label_no_toolchain") - # Ensure targets match naming patterns so that __assetres, __header, __impl - # targets work properly. Those generated targets allow for effective deps - # filtering. + # Ensure targets match naming patterns so that __assetres, __header, __host, + # and __validate targets work properly. if (filter_exclude([ _type ], _java_resource_types) == []) { - if (filter_exclude([ _target_label ], _java_resource_patterns) != []) { + if (filter_exclude([ _target_label ], java_resource_patterns) != []) { assert(false, "Invalid java resource target name: $_target_label") } } else if (filter_exclude([ _type ], _java_library_types) == []) { - if (filter_exclude([ _target_label ], _java_library_patterns) != [] || - filter_exclude([ _target_label ], _java_resource_patterns) == []) { + if (filter_exclude([ _target_label ], java_library_patterns) != [] || + filter_exclude([ _target_label ], java_resource_patterns) == []) { assert(false, "Invalid java library target name: $_target_label") } } else if (_type == "group") { @@ -152,8 +171,6 @@ template("write_build_config") { foreach(_possible_dep, invoker.possible_config_deps) { _dep_label = get_label_info(_possible_dep, "label_no_toolchain") if (filter_exclude([ _dep_label ], java_target_patterns) == []) { - # Put the bug number in the target name so that false-positives - # have a hint in the error message about non-existent dependencies. deps += [ "$_dep_label$build_config_target_suffix" ] _dep_gen_dir = get_label_info(_possible_dep, "target_gen_dir") _dep_name = get_label_info(_possible_dep, "name") @@ -167,18 +184,28 @@ template("write_build_config") { if (defined(invoker.possible_config_public_deps)) { foreach(_possible_dep, invoker.possible_config_public_deps) { _dep_label = get_label_info(_possible_dep, "label_no_toolchain") - if (filter_exclude([ _dep_label ], java_target_patterns) == []) { - # Put the bug number in the target name so that false-positives - # have a hint in the error message about non-existent dependencies. - deps += [ "$_dep_label$build_config_target_suffix" ] - _dep_gen_dir = get_label_info(_possible_dep, "target_gen_dir") - _dep_name = get_label_info(_possible_dep, "name") - _dep_config = "$_dep_gen_dir/$_dep_name.build_config.json" - _public_deps_configs += [ _dep_config ] - } + # E.g. Adding an action that generates a .java file that is then + # consumed by a subsequent java_library() target would not work + # because the libraries depend only on the nested targets of one + # another. It is simplest to just ban non-java public_deps. + assert(filter_exclude([ _dep_label ], java_target_patterns) == [], + "Only java_library targets can be used as public_deps. " + + "Found:\n${_dep_label}\non Target:\n" + + get_label_info(":$target_name", "label_no_toolchain")) + + # Put the bug number in the target name so that false-positives + # have a hint in the error message about non-existent dependencies. + deps += [ "$_dep_label$build_config_target_suffix" ] + _dep_gen_dir = get_label_info(_possible_dep, "target_gen_dir") + _dep_name = get_label_info(_possible_dep, "name") + _dep_config = "$_dep_gen_dir/$_dep_name.build_config.json" + + _public_deps_configs += [ _dep_config ] } } + inputs += _deps_configs + inputs += _public_deps_configs _rebased_deps_configs = rebase_path(_deps_configs, root_build_dir) _rebased_public_deps_configs = rebase_path(_public_deps_configs, root_build_dir) @@ -195,6 +222,10 @@ template("write_build_config") { _target_label, ] + if (defined(invoker.preferred_dep) && invoker.preferred_dep) { + args += [ "--preferred-dep" ] + } + if (defined(invoker.aar_path)) { args += [ "--aar-path", @@ -231,6 +262,12 @@ template("write_build_config") { rebase_path(invoker.ijar_path, root_build_dir), ] } + if (defined(invoker.kotlinc_jar_path)) { + args += [ + "--kotlinc-jar-path", + rebase_path(invoker.kotlinc_jar_path, root_build_dir), + ] + } if (defined(invoker.java_resources_jar)) { args += [ "--java-resources-jar-path", @@ -240,15 +277,16 @@ template("write_build_config") { if (defined(invoker.annotation_processor_deps) && invoker.annotation_processor_deps != []) { _processor_configs = [] - foreach(_processor_dep, invoker.annotation_processor_deps) { - _dep_label = get_label_info(_processor_dep, "label_no_toolchain") - _dep_gen_dir = get_label_info(_processor_dep, "target_gen_dir") - _dep_name = get_label_info(_processor_dep, "name") + foreach(_dep_label, invoker.annotation_processor_deps) { deps += [ "$_dep_label$build_config_target_suffix" ] - _processor_configs += [ "$_dep_gen_dir/$_dep_name.build_config.json" ] + _dep_gen_dir = get_label_info(_dep_label, "target_gen_dir") + _dep_name = get_label_info(_dep_label, "name") + _dep_config = "$_dep_gen_dir/$_dep_name.build_config.json" + _processor_configs += [ _dep_config ] } _rebased_processor_configs = rebase_path(_processor_configs, root_build_dir) + inputs += _processor_configs args += [ "--annotation-processor-configs=$_rebased_processor_configs" ] } @@ -280,17 +318,20 @@ template("write_build_config") { invoker.bypass_platform_checks) { args += [ "--bypass-platform-checks" ] } + if (defined(invoker.is_robolectric) && invoker.is_robolectric) { + args += [ "--is-robolectric" ] + } if (defined(invoker.apk_under_test)) { - deps += [ "${invoker.apk_under_test}$build_config_target_suffix" ] - apk_under_test_gen_dir = - get_label_info(invoker.apk_under_test, "target_gen_dir") - apk_under_test_name = get_label_info(invoker.apk_under_test, "name") - apk_under_test_config = - "$apk_under_test_gen_dir/$apk_under_test_name.build_config.json" + _dep_label = invoker.apk_under_test + _dep_gen_dir = get_label_info(_dep_label, "target_gen_dir") + _dep_name = get_label_info(_dep_label, "name") + _dep_config = "$_dep_gen_dir/$_dep_name.build_config.json" + inputs += [ _dep_config ] + deps += [ "$_dep_label$build_config_target_suffix" ] args += [ "--tested-apk-config", - rebase_path(apk_under_test_config, root_build_dir), + rebase_path(_dep_config, root_build_dir), ] } @@ -394,10 +435,6 @@ template("write_build_config") { ] } - if (defined(invoker.is_base_module) && invoker.is_base_module) { - args += [ "--is-base-module" ] - } - if (defined(invoker.loadable_modules)) { _rebased_loadable_modules = rebase_path(invoker.loadable_modules, root_build_dir) @@ -432,19 +469,10 @@ template("write_build_config") { args += [ "--secondary-native-lib-placeholders=${invoker.secondary_native_lib_placeholders}" ] } - if (defined(invoker.uncompress_shared_libraries) && - invoker.uncompress_shared_libraries) { - args += [ "--uncompress-shared-libraries" ] - } - if (defined(invoker.library_always_compress)) { args += [ "--library-always-compress=${invoker.library_always_compress}" ] } - if (defined(invoker.library_renames)) { - args += [ "--library-renames=${invoker.library_renames}" ] - } - if (defined(invoker.apk_path)) { # TODO(tiborg): Remove APK path from build config and use # install_artifacts from metadata instead. @@ -462,10 +490,10 @@ template("write_build_config") { } } - if (defined(invoker.java_sources_file)) { + if (defined(invoker.target_sources_file)) { args += [ - "--java-sources-file", - rebase_path(invoker.java_sources_file, root_build_dir), + "--target-sources-file", + rebase_path(invoker.target_sources_file, root_build_dir), ] } if (defined(invoker.srcjar)) { @@ -508,20 +536,6 @@ template("write_build_config") { rebase_path(invoker.proguard_configs, root_build_dir) args += [ "--proguard-configs=$_rebased_proguard_configs" ] } - if (defined(invoker.static_library_dependent_targets)) { - _dependent_configs = [] - foreach(_dep, invoker.static_library_dependent_targets) { - _dep_name = _dep.name - _dep_label = get_label_info(_dep_name, "label_no_toolchain") - deps += [ "$_dep_label$build_config_target_suffix" ] - _dep_gen_dir = get_label_info(_dep_name, "target_gen_dir") - _dep_name = get_label_info(_dep_name, "name") - _config = rebase_path("$_dep_gen_dir/$_dep_name.build_config.json", - root_build_dir) - _dependent_configs += [ _config ] - } - args += [ "--static-library-dependent-configs=$_dependent_configs" ] - } if (defined(invoker.gradle_treat_as_prebuilt) && invoker.gradle_treat_as_prebuilt) { args += [ "--gradle-treat-as-prebuilt" ] @@ -533,18 +547,42 @@ template("write_build_config") { ] } if (defined(invoker.base_module_target)) { - _base_label = - get_label_info(invoker.base_module_target, "label_no_toolchain") - _dep_gen_dir = get_label_info(_base_label, "target_gen_dir") - _dep_name = get_label_info(_base_label, "name") - deps += [ "$_base_label$build_config_target_suffix" ] - _base_module_build_config = "$_dep_gen_dir/$_dep_name.build_config.json" - inputs += [ _base_module_build_config ] + _dep_label = invoker.base_module_target + _dep_gen_dir = get_label_info(_dep_label, "target_gen_dir") + _dep_name = get_label_info(_dep_label, "name") + _dep_config = "$_dep_gen_dir/$_dep_name.build_config.json" + deps += [ "$_dep_label$build_config_target_suffix" ] + inputs += [ _dep_config ] args += [ "--base-module-build-config", - rebase_path(_base_module_build_config, root_build_dir), + rebase_path(_dep_config, root_build_dir), + ] + } + if (defined(invoker.parent_module_target)) { + _dep_label = invoker.parent_module_target + _dep_gen_dir = get_label_info(_dep_label, "target_gen_dir") + _dep_name = get_label_info(_dep_label, "name") + _dep_config = "$_dep_gen_dir/$_dep_name.build_config.json" + deps += [ "$_dep_label$build_config_target_suffix" ] + inputs += [ _dep_config ] + args += [ + "--parent-module-build-config", + rebase_path(_dep_config, root_build_dir), ] } + if (defined(invoker.module_name)) { + args += [ + "--module-name", + invoker.module_name, + ] + } + if (defined(invoker.modules)) { + foreach(_module, invoker.modules) { + if (defined(_module.uses_split)) { + args += [ "--uses-split=${_module.name}:${_module.uses_split}" ] + } + } + } if (defined(invoker.module_build_configs)) { inputs += invoker.module_build_configs _rebased_configs = @@ -553,8 +591,6 @@ template("write_build_config") { } if (defined(invoker.add_view_trace_events) && invoker.add_view_trace_events) { - args += [ "--add-view-trace-events" ] - # Adding trace events involves rewriting bytecode and generating a new set # of jar files. In order to avoid conflicts between bundles we save the # new jars in a bundle specific gen/ directory. The build config for the @@ -563,24 +599,22 @@ template("write_build_config") { # We use the base module's target_gen_dir because non-base modules and the # app bundle targets have a reference to it (base_module_target). if (_type == "android_app_bundle") { - _base_module_target_name = + _trace_events_target_name = get_label_info(_parent_invoker.base_module_target, "name") - _base_module_gen_dir = - get_label_info(_base_module_target_name, "target_gen_dir") + } else if (defined(invoker.base_module_target)) { + _trace_events_target_name = + get_label_info(invoker.base_module_target, "name") } else { - if (defined(invoker.base_module_target)) { - _base_module_name = get_label_info(invoker.base_module_target, "name") - _base_module_gen_dir = - get_label_info(_base_module_name, "target_gen_dir") - } else { - _grandparent_invoker = _parent_invoker.invoker - _base_module_gen_dir = - get_label_info(_grandparent_invoker.target_name, "target_gen_dir") - } + _grandparent_invoker = _parent_invoker.invoker + _trace_events_target_name = _grandparent_invoker.target_name } + + # FIXME: This should likely be using the base module's target_out_dir + # rather than the current target's. args += [ - "--base-module-gen-dir", - rebase_path(_base_module_gen_dir, root_build_dir), + "--trace-events-jar-dir", + rebase_path("$target_out_dir/$_trace_events_target_name", + root_build_dir), ] } if (defined(invoker.version_name)) { @@ -638,22 +672,6 @@ template("generate_android_wrapper") { template("generate_r_java") { action_with_pydeps(target_name) { forward_variables_from(invoker, TESTONLY_AND_VISIBILITY + [ "deps" ]) - if (!defined(deps)) { - deps = [] - } - if (defined(invoker.possible_resource_deps)) { - foreach(_dep, invoker.possible_resource_deps) { - _target_label = get_label_info(_dep, "label_no_toolchain") - if (filter_exclude([ _target_label ], _java_library_patterns) == [] && - filter_exclude([ _target_label ], _java_resource_patterns) != []) { - # Depend on the java libraries' transitive __assetres target instead. - # This is required to ensure depending on java_groups works. - deps += [ "${_target_label}__assetres" ] - } else { - deps += [ _dep ] - } - } - } depfile = "$target_gen_dir/${invoker.target_name}.d" inputs = [ invoker.build_config ] outputs = [ invoker.srcjar_path ] @@ -676,6 +694,7 @@ template("test_runner_script") { testonly = true _test_name = invoker.test_name _test_type = invoker.test_type + _is_unit_test = defined(invoker.is_unit_test) && invoker.is_unit_test _incremental_apk = defined(invoker.incremental_apk) && invoker.incremental_apk _runtime_deps = @@ -709,7 +728,8 @@ template("test_runner_script") { if (defined(invoker.apk_under_test)) { _install_artifacts_json = "${target_gen_dir}/${target_name}.install_artifacts" - generated_file("${target_name}__install_artifacts") { + _install_artifacts_target_name = "${target_name}__install_artifacts" + generated_file(_install_artifacts_target_name) { deps = [ invoker.apk_under_test ] output_conversion = "json" outputs = [ _install_artifacts_json ] @@ -720,12 +740,19 @@ template("test_runner_script") { } generate_android_wrapper(target_name) { + forward_variables_from(invoker, + [ + "assert_no_deps", + "metadata", + "public_deps", + "visibility", + ]) wrapper_script = "$root_build_dir/bin/run_${_test_name}" executable = "//testing/test_env.py" - if (defined(android_test_runner_script)) { - _runner_script = android_test_runner_script + if (defined(invoker.android_test_runner_script)) { + _runner_script = invoker.android_test_runner_script } else { _runner_script = "//build/android/test_runner.py" } @@ -735,9 +762,12 @@ template("test_runner_script") { deps = invoker.deps } data_deps = [ - "//build/android:test_runner_py", + "//build/android:test_runner_core_py", "//testing:test_scripts_shared", ] + if (_test_type != "junit") { + data_deps += [ "//build/android:test_runner_device_support" ] + } if (defined(invoker.data_deps)) { data_deps += invoker.data_deps } @@ -751,8 +781,13 @@ template("test_runner_script") { _test_type, "--output-directory", "@WrappedPath(.)", + "--wrapper-script-args", ] + if (_is_unit_test) { + executable_args += [ "--is-unit-test" ] + } + if (_runtime_deps) { deps += [ ":$_runtime_deps_target" ] data += [ _runtime_deps_file ] @@ -808,12 +843,9 @@ template("test_runner_script") { if (_incremental_apk) { _test_apk = "@WrappedPath(@FileArg($_rebased_apk_build_config:deps_info:incremental_apk_path))" } - _rebased_test_jar = rebase_path(invoker.test_jar, root_build_dir) executable_args += [ "--test-apk", _test_apk, - "--test-jar", - "@WrappedPath(${_rebased_test_jar})", ] if (defined(invoker.apk_under_test)) { if (_incremental_apk) { @@ -826,7 +858,7 @@ template("test_runner_script") { rebase_path(_apk_under_test_build_config, root_build_dir) _apk_under_test = "@WrappedPath(@FileArg($_rebased_apk_under_test_build_config:deps_info:incremental_apk_path))" } else { - deps += [ ":${target_name}__install_artifacts" ] + deps += [ ":${_install_artifacts_target_name}" ] _rebased_install_artifacts_json = rebase_path(_install_artifacts_json, root_build_dir) _apk_under_test = @@ -878,11 +910,14 @@ template("test_runner_script") { executable_args += [ "--test-suite", invoker.test_suite, + "--native-libs-dir", + "@WrappedPath($_robolectric_libs_dir)", ] + # Test runner uses this generated wrapper script. + data += [ "$root_build_dir/bin/helper/${invoker.test_suite}" ] + deps += [ ":${invoker.test_suite}$build_config_target_suffix" ] - _junit_binary_build_config = - "${target_gen_dir}/${invoker.test_suite}.build_config.json" _rebased_robolectric_runtime_deps_dir = rebase_path("//third_party/robolectric/lib", root_build_dir) @@ -912,6 +947,13 @@ template("test_runner_script") { assert(false, "Invalid test type: $_test_type.") } + # Devil does not reliably work with component builds of its tools. + # There's no benefit to them, so fall back to prebuilts for component builds. + # https://crbug.com/1404180 + if (_test_type != "junit" && !is_component_build) { + executable_args += [ "--use-local-devil-tools" ] + } + if (defined(invoker.additional_apks)) { foreach(additional_apk, invoker.additional_apks) { deps += [ "$additional_apk$build_config_target_suffix" ] @@ -982,9 +1024,6 @@ if (enable_java_templates) { template("android_lint") { action_with_pydeps(target_name) { forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) - if (!defined(deps)) { - deps = [] - } # https://crbug.com/1098752 Fix for bot OOM (https://crbug.com/1098333). if (defined(java_cmd_pool_size)) { @@ -996,22 +1035,23 @@ if (enable_java_templates) { # Lint requires generated sources and generated resources from the build. # Turbine __header targets depend on all generated sources, and the # __assetres targets depend on all generated resources. + deps = [] if (defined(invoker.deps)) { - foreach(_dep, invoker.deps) { - _target_label = get_label_info(_dep, "label_no_toolchain") - if (filter_exclude([ _target_label ], _java_library_patterns) == [] && - filter_exclude([ _target_label ], _java_resource_patterns) != - []) { - deps += [ - "${_target_label}__assetres", - "${_target_label}__header", - ] - } else { - # Keep non-java deps as they may generate files used only by lint. - # e.g. generated suppressions.xml files. - deps += [ _dep ] - } + _lib_deps = + filter_exclude(filter_include(invoker.deps, java_library_patterns), + java_resource_patterns) + foreach(_lib_dep, _lib_deps) { + # Expand //foo/java -> //foo/java:java + _lib_dep = get_label_info(_lib_dep, "label_no_toolchain") + deps += [ + "${_lib_dep}__assetres", + "${_lib_dep}__header", + ] } + + # Keep non-java deps as they may generate files used only by lint. + # e.g. generated suppressions.xml files. + deps += filter_exclude(invoker.deps, _lib_deps) } if (defined(invoker.min_sdk_version)) { @@ -1020,7 +1060,12 @@ if (enable_java_templates) { _min_sdk_version = default_min_sdk_version } - _lint_binary_path = "$lint_android_sdk_root/cmdline-tools/latest/bin/lint" + if (defined(invoker.lint_jar_path)) { + _lint_jar_path = invoker.lint_jar_path + } else { + _lint_jar_path = _default_lint_jar_path + } + _cache_dir = "$root_build_dir/android_lint_cache" # Save generated xml files in a consistent location for debugging. @@ -1030,7 +1075,9 @@ if (enable_java_templates) { script = "//build/android/gyp/lint.py" depfile = "$target_gen_dir/$target_name.d" inputs = [ - _lint_binary_path, + java_path_for_inputs, + _lint_jar_path, + _custom_lint_jar_path, _backported_methods, ] @@ -1039,8 +1086,10 @@ if (enable_java_templates) { get_label_info(":${target_name}", "label_no_toolchain"), "--depfile", rebase_path(depfile, root_build_dir), - "--lint-binary-path", - rebase_path(_lint_binary_path, root_build_dir), + "--lint-jar-path", + rebase_path(_lint_jar_path, root_build_dir), + "--custom-lint-jar-path", + rebase_path(_custom_lint_jar_path, root_build_dir), "--cache-dir", rebase_path(_cache_dir, root_build_dir), "--lint-gen-dir", @@ -1119,7 +1168,7 @@ if (enable_java_templates) { # Lint requires all source and all resource files to be passed in the # same invocation for checks like UnusedResources. - "--java-sources=@FileArg($_rebased_build_config:deps_info:lint_java_sources)", + "--sources=@FileArg($_rebased_build_config:deps_info:lint_sources)", "--aars=@FileArg($_rebased_build_config:deps_info:lint_aars)", "--srcjars=@FileArg($_rebased_build_config:deps_info:lint_srcjars)", "--resource-sources=@FileArg($_rebased_build_config:deps_info:lint_resource_sources)", @@ -1139,16 +1188,12 @@ if (enable_java_templates) { } template("proguard") { - forward_variables_from(invoker, - TESTONLY_AND_VISIBILITY + [ - "data", - "data_deps", - "public_deps", - ]) + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) _script = "//build/android/gyp/proguard.py" _deps = invoker.deps _inputs = [ + java_path_for_inputs, invoker.build_config, _r8_path, ] @@ -1161,13 +1206,25 @@ if (enable_java_templates) { _mapping_path = "${invoker.output_path}.mapping" } - _enable_jdk_library_desugaring = enable_jdk_library_desugaring - if (defined(invoker.supports_jdk_library_desugaring) && - !invoker.supports_jdk_library_desugaring) { - _enable_jdk_library_desugaring = false + _rebased_build_config = rebase_path(invoker.build_config, root_build_dir) + + # This is generally the apk name, and serves to identify the mapping + # file that would be required to deobfuscate a stacktrace. + _mapping_basename = get_path_info(_mapping_path, "name") + _version_code = "@FileArg($_rebased_build_config:deps_info:version_code)" + _package_name = "@FileArg($_rebased_build_config:deps_info:package_name)" + if (defined(invoker.package_name)) { + _package_name = invoker.package_name + } + if (defined(invoker.version_code)) { + _version_code = invoker.version_code } - _rebased_build_config = rebase_path(invoker.build_config, root_build_dir) + # The Mapping ID is parsed to when uploading mapping files. + # See: https://crbug.com/1417308 + _source_file_template = + "chromium-$_mapping_basename-$android_channel-$_version_code" + _args = [ "--mapping-output", rebase_path(_mapping_path, root_build_dir), @@ -1177,33 +1234,20 @@ if (enable_java_templates) { "@FileArg($_rebased_build_config:android:sdk_jars)", "--r8-path", rebase_path(_r8_path, root_build_dir), + "--package-name=$_package_name", + "--source-file", + _source_file_template, ] if (treat_warnings_as_errors) { _args += [ "--warnings-as-errors" ] } - if (defined(invoker.desugar_jars_paths)) { - _rebased_desugar_jars_paths = - rebase_path(invoker.desugar_jars_paths, root_build_dir) - args += [ "--classpath=${_rebased_desugar_jars_paths}" ] - } if ((!defined(invoker.proguard_enable_obfuscation) || invoker.proguard_enable_obfuscation) && enable_proguard_obfuscation) { - _proguard_sourcefile_suffix = "" - if (defined(invoker.proguard_sourcefile_suffix)) { - _proguard_sourcefile_suffix = "-${invoker.proguard_sourcefile_suffix}" - } - - # This is generally the apk name, and serves to identify the mapping - # file that would be required to deobfuscate a stacktrace. - _mapping_id = get_path_info(_mapping_path, "name") - _args += [ - "--enable-obfuscation", - "--sourcefile", - "chromium-${_mapping_id}${_proguard_sourcefile_suffix}", - ] - } else if (defined(invoker.proguard_sourcefile_suffix)) { - not_needed(invoker, [ "proguard_sourcefile_suffix" ]) + _args += [ "--enable-obfuscation" ] + } + if (defined(invoker.repackage_classes)) { + _args += [ "--repackage-classes=" + invoker.repackage_classes ] } if (defined(invoker.modules)) { @@ -1215,11 +1259,13 @@ if (enable_java_templates) { "--dex-dest=@FileArg($_rebased_module_build_config:final_dex:path)", ] + # The bundle's build config has the correct classpaths - the individual + # modules' build configs may double-use some jars. if (defined(invoker.add_view_trace_events) && invoker.add_view_trace_events) { - _args += [ "--feature-jars=@FileArg($_rebased_module_build_config:deps_info:trace_event_rewritten_device_classpath)" ] + _args += [ "--feature-jars=@FileArg($_rebased_build_config:modules:${_feature_module.name}:trace_event_rewritten_device_classpath)" ] } else { - _args += [ "--feature-jars=@FileArg($_rebased_module_build_config:deps_info:device_classpath)" ] + _args += [ "--feature-jars=@FileArg($_rebased_build_config:modules:${_feature_module.name}:device_classpath)" ] } if (defined(_feature_module.uses_split)) { @@ -1245,43 +1291,26 @@ if (enable_java_templates) { } _outputs += [ _mapping_path ] + if (defined(invoker.input_art_profile)) { + _inputs += [ invoker.input_art_profile ] + _args += [ "--input-art-profile=" + + rebase_path(invoker.input_art_profile, root_build_dir) ] + if (defined(invoker.output_art_profile)) { + _outputs += [ invoker.output_art_profile ] + _args += [ "--output-art-profile=" + + rebase_path(invoker.output_art_profile, root_build_dir) ] + } + if (defined(invoker.enable_startup_profile) && + invoker.enable_startup_profile) { + _args += [ "--apply-startup-profile" ] + } + } + if (defined(invoker.enable_proguard_checks) && !invoker.enable_proguard_checks) { _args += [ "--disable-checks" ] } - if (defined(invoker.is_static_library) && invoker.is_static_library) { - _args += [ - "--extra-mapping-output-paths", - "@FileArg($_rebased_build_config:deps_info:static_library_proguard_mapping_output_paths)", - ] - } - - if (_enable_jdk_library_desugaring) { - _args += [ - "--desugar-jdk-libs-json", - rebase_path(_desugar_jdk_libs_json, root_build_dir), - ] - _inputs += [ _desugar_jdk_libs_json ] - - _args += [ - "--desugar-jdk-libs-jar", - rebase_path(_desugar_jdk_libs_jar, root_build_dir), - "--desugar-jdk-libs-configuration-jar", - rebase_path(_desugar_jdk_libs_configuration_jar, root_build_dir), - ] - _inputs += [ - _desugar_jdk_libs_jar, - _desugar_jdk_libs_configuration_jar, - ] - - _desugared_library_keep_rule_output_path = - "$target_gen_dir/$target_name.desugared_library_keep_rules.flags" - _args += [ - "--desugared-library-keep-rule-output", - rebase_path(_desugared_library_keep_rule_output_path, root_build_dir), - ] - } _ignore_desugar_missing_deps = defined(invoker.ignore_desugar_missing_deps) && invoker.ignore_desugar_missing_deps @@ -1289,7 +1318,12 @@ if (enable_java_templates) { _args += [ "--show-desugar-default-interface-warnings" ] } - if (enable_java_asserts) { + if (defined(invoker.custom_assertion_handler)) { + _args += [ + "--assertion-handler", + invoker.custom_assertion_handler, + ] + } else if (enable_java_asserts) { # The default for generating dex file format is # --force-disable-assertions. _args += [ "--force-enable-assertions" ] @@ -1346,6 +1380,12 @@ if (enable_java_templates) { _deps += [ ":$_expectations_target" ] } action_with_pydeps(target_name) { + forward_variables_from(invoker, + [ + "data", + "data_deps", + "public_deps", + ]) script = _script deps = _deps inputs = _inputs @@ -1376,11 +1416,16 @@ if (enable_java_templates) { # template("java_binary_script") { action_with_pydeps(target_name) { - forward_variables_from(invoker, TESTONLY_AND_VISIBILITY + [ "deps" ]) + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) _main_class = invoker.main_class _build_config = invoker.build_config _script_name = invoker.script_name + if (defined(invoker.max_heap_size)) { + _max_heap_size = invoker.max_heap_size + } else { + _max_heap_size = "1G" + } script = "//build/android/gyp/create_java_binary_script.py" inputs = [ _build_config ] @@ -1392,25 +1437,32 @@ if (enable_java_templates) { rebase_path(_java_script, root_build_dir), "--main-class", _main_class, - ] - args += [ "--classpath=@FileArg($_rebased_build_config:deps_info:host_classpath)", + "--max-heap-size=$_max_heap_size", ] + data = [] + deps = [ "//third_party/jdk:java_data" ] + if (defined(invoker.deps)) { + deps += invoker.deps + } if (use_jacoco_coverage) { args += [ "--classpath", - rebase_path("//third_party/jacoco/lib/jacocoagent.jar", - root_build_dir), + rebase_path(_jacoco_host_jar, root_build_dir), ] - } - if (use_jacoco_coverage || !treat_warnings_as_errors) { - args += [ "--noverify" ] + data += [ _jacoco_host_jar ] } if (defined(invoker.tiered_stop_at_level_one) && invoker.tiered_stop_at_level_one) { args += [ "--tiered-stop-at-level-one" ] } + if (defined(invoker.extra_classpath_jars)) { + _rebased_extra_classpath_jars = + rebase_path(invoker.extra_classpath_jars, root_build_dir) + args += [ "--classpath=${_rebased_extra_classpath_jars}" ] + data += invoker.extra_classpath_jars + } if (defined(invoker.wrapper_script_args)) { args += [ "--" ] + invoker.wrapper_script_args } @@ -1457,6 +1509,10 @@ if (enable_java_templates) { assert(!(defined(invoker.apply_mapping) && !_proguard_enabled), "apply_mapping can only be specified if proguard is enabled.") + if (defined(invoker.custom_assertion_handler)) { + assert(_proguard_enabled, + "Proguard is required to support the custom assertion handler.") + } if (_enable_main_dex_list) { _main_dex_rules = "//build/android/main_dex_classes.flags" @@ -1473,35 +1529,42 @@ if (enable_java_templates) { forward_variables_from(invoker, TESTONLY_AND_VISIBILITY + [ "add_view_trace_events", + "input_art_profile", + "output_art_profile", + "enable_startup_profile", "build_config", + "custom_assertion_handler", "data", "data_deps", "deps", - "desugar_jars_paths", "enable_proguard_checks", "expected_proguard_config", "expected_proguard_config_base", "ignore_desugar_missing_deps", - "is_static_library", "modules", + "package_name", "proguard_enable_obfuscation", "proguard_mapping_path", "proguard_sourcefile_suffix", - "supports_jdk_library_desugaring", + "repackage_classes", "top_target_name", + "version_code", ]) + args = [ + "--proguard-configs=@FileArg($_rebased_build_config:deps_info:proguard_all_configs)", + "--min-api=$_min_sdk_version", + ] inputs = [] if (defined(invoker.inputs)) { inputs += invoker.inputs } if (defined(invoker.proguard_configs)) { inputs += invoker.proguard_configs + _rebased_proguard_configs = + rebase_path(invoker.proguard_configs, root_build_dir) + args += [ "--proguard-configs=$_rebased_proguard_configs" ] } - args = [ - "--proguard-configs=@FileArg($_rebased_build_config:deps_info:proguard_all_configs)", - "--min-api=$_min_sdk_version", - ] if (defined(invoker.has_apk_under_test) && invoker.has_apk_under_test) { args += [ "--input-paths=@FileArg($_rebased_build_config:deps_info:device_classpath_extended)" ] } else if (defined(invoker.add_view_trace_events) && @@ -1544,6 +1607,8 @@ if (enable_java_templates) { } } else { # !_proguard_enabled _is_library = defined(invoker.is_library) && invoker.is_library + assert(!(defined(invoker.input_classes_filearg) && _is_library)) + assert(_is_library == defined(invoker.unprocessed_jar_path)) _input_class_jars = [] if (defined(invoker.input_class_jars)) { _input_class_jars = invoker.input_class_jars @@ -1566,9 +1631,13 @@ if (enable_java_templates) { depfile = "$target_gen_dir/$target_name.d" outputs = [ invoker.output ] inputs = [ - _r8_path, + java_path_for_inputs, + _d8_path, _custom_d8_path, ] + if (defined(invoker.inputs)) { + inputs += invoker.inputs + } if (!_is_library) { # http://crbug.com/725224. Fix for bots running out of memory. @@ -1586,7 +1655,7 @@ if (enable_java_templates) { rebase_path(outputs[0], root_build_dir), "--min-api=$_min_sdk_version", "--r8-jar-path", - rebase_path(_r8_path, root_build_dir), + rebase_path(_d8_path, root_build_dir), "--custom-d8-jar-path", rebase_path(_custom_d8_path, root_build_dir), @@ -1634,6 +1703,10 @@ if (enable_java_templates) { if (defined(invoker.input_classes_filearg)) { inputs += [ invoker.build_config ] args += [ "--class-inputs-filearg=${invoker.input_classes_filearg}" ] + + # Required for the same reason as unprocessed_jar_path is added to + # classpath (see note below). + args += [ "--classpath=${invoker.input_classes_filearg}" ] } if (_input_class_jars != []) { inputs += _input_class_jars @@ -1651,14 +1724,6 @@ if (enable_java_templates) { if (_enable_desugar) { args += [ "--desugar" ] - # Passing the flag for dex merging causes invalid dex files to be created. - if (enable_jdk_library_desugaring && !_is_dex_merging) { - inputs += [ _desugar_jdk_libs_json ] - args += [ - "--desugar-jdk-libs-json", - rebase_path(_desugar_jdk_libs_json, root_build_dir), - ] - } _ignore_desugar_missing_deps = defined(invoker.ignore_desugar_missing_deps) && invoker.ignore_desugar_missing_deps @@ -1667,36 +1732,38 @@ if (enable_java_templates) { } } if (_desugar_needs_classpath) { + # Cannot use header jar for the active jar, because it does not + # contain anonymous classes. https://crbug.com/1342018#c5 + # Cannot use processed .jar here because it might have classes + # filtered out via jar_excluded_patterns. + # Must come first in classpath in order to take precedence over + # deps that defined the same classes (via jar_excluded_patterns). + if (defined(invoker.unprocessed_jar_path)) { + args += [ + "--classpath", + rebase_path(invoker.unprocessed_jar_path, root_build_dir), + + # Pass the full classpath to find new dependencies that are not in + # the .desugardeps file. + "--classpath=@FileArg($_rebased_build_config:deps_info:javac_full_interface_classpath)", + ] + inputs += [ invoker.unprocessed_jar_path ] + } _desugar_dependencies_path = "$target_gen_dir/$target_name.desugardeps" args += [ "--desugar-dependencies", rebase_path(_desugar_dependencies_path, root_build_dir), "--bootclasspath=@FileArg($_rebased_build_config:android:sdk_jars)", - - # Pass the full classpath to find new dependencies that are not in - # the .desugardeps file. - "--classpath=@FileArg($_rebased_build_config:deps_info:javac_full_interface_classpath)", ] - if (defined(invoker.desugar_jars_paths)) { - _rebased_desugar_jars_paths = - rebase_path(invoker.desugar_jars_paths, root_build_dir) - args += [ "--classpath=${_rebased_desugar_jars_paths}" ] - } - if (defined(invoker.final_ijar_path)) { - # Need to include the input .interface.jar on the classpath in order to make - # jar_excluded_patterns classes visible to desugar. - args += [ - "--classpath", - rebase_path(invoker.final_ijar_path, root_build_dir), - ] - inputs += [ invoker.final_ijar_path ] - } - } else { - not_needed(invoker, [ "desugar_jars_paths" ]) } - if (enable_java_asserts) { + if (defined(invoker.custom_assertion_handler)) { + args += [ + "--assertion-handler", + invoker.custom_assertion_handler, + ] + } else if (enable_java_asserts) { # The default for generating dex file format is # --force-disable-assertions. args += [ "--force-enable-assertions" ] @@ -1705,38 +1772,6 @@ if (enable_java_templates) { } } - # Variables - # output: Path to output ".l8.dex". - # min_sdk_version: The minimum Android SDK version this target supports. - template("dex_jdk_libs") { - action_with_pydeps(target_name) { - script = "//build/android/gyp/dex_jdk_libs.py" - inputs = [ - _r8_path, - _desugar_jdk_libs_json, - _desugar_jdk_libs_jar, - _desugar_jdk_libs_configuration_jar, - ] - outputs = [ invoker.output ] - args = [ - "--r8-path", - rebase_path(_r8_path, root_build_dir), - "--desugar-jdk-libs-json", - rebase_path(_desugar_jdk_libs_json, root_build_dir), - "--desugar-jdk-libs-jar", - rebase_path(_desugar_jdk_libs_jar, root_build_dir), - "--desugar-jdk-libs-configuration-jar", - rebase_path(_desugar_jdk_libs_configuration_jar, root_build_dir), - "--output", - rebase_path(invoker.output, root_build_dir), - "--min-api=${invoker.min_sdk_version}", - ] - if (treat_warnings_as_errors) { - args += [ "--warnings-as-errors" ] - } - } - } - template("jacoco_instr") { action_with_pydeps(target_name) { forward_variables_from(invoker, @@ -1751,7 +1786,8 @@ if (enable_java_templates) { _jacococli_jar = "//third_party/jacoco/lib/jacococli.jar" script = "//build/android/gyp/jacoco_instr.py" - inputs = invoker.java_files + [ + inputs = invoker.source_files + [ + java_path_for_inputs, _jacococli_jar, invoker.input_jar_path, ] @@ -1766,8 +1802,8 @@ if (enable_java_templates) { rebase_path(invoker.output_jar_path, root_build_dir), "--sources-json-file", rebase_path(_sources_json_file, root_build_dir), - "--java-sources-file", - rebase_path(invoker.java_sources_file, root_build_dir), + "--target-sources-file", + rebase_path(invoker.target_sources_file, root_build_dir), "--jacococli-jar", rebase_path(_jacococli_jar, root_build_dir), ] @@ -1783,7 +1819,12 @@ if (enable_java_templates) { template("filter_jar") { action_with_pydeps(target_name) { script = "//build/android/gyp/filter_zip.py" - forward_variables_from(invoker, TESTONLY_AND_VISIBILITY + [ "deps" ]) + forward_variables_from(invoker, + TESTONLY_AND_VISIBILITY + [ + "deps", + "data", + "data_deps", + ]) inputs = [ invoker.input_jar ] if (defined(invoker.inputs)) { inputs += invoker.inputs @@ -1812,7 +1853,6 @@ if (enable_java_templates) { template("process_java_library") { forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) - _deps = invoker.jar_deps _previous_output_jar = invoker.input_jar_path if (invoker.jacoco_instrument) { @@ -1826,10 +1866,12 @@ if (enable_java_templates) { filter_jar(_filter_jar_target_name) { forward_variables_from(invoker, [ + "data", + "data_deps", "jar_excluded_patterns", "jar_included_patterns", ]) - deps = _deps + deps = invoker.deps input_jar = _previous_output_jar output_jar = _filter_jar_output_jar } @@ -1842,11 +1884,11 @@ if (enable_java_templates) { # javaagent as the desired coverage data was not being generated. # See crbug.com/1097815. jacoco_instr(target_name) { - deps = [ ":$_filter_jar_target_name" ] + invoker.jar_deps + deps = [ ":$_filter_jar_target_name" ] + invoker.deps forward_variables_from(invoker, [ - "java_files", - "java_sources_file", + "source_files", + "target_sources_file", ]) input_jar_path = _filter_jar_output_jar @@ -1857,10 +1899,11 @@ if (enable_java_templates) { template("bytecode_processor") { action_with_pydeps(target_name) { - forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY + [ "data_deps" ]) _bytecode_checker_script = "$root_build_dir/bin/helper/bytecode_processor" script = "//build/android/gyp/bytecode_processor.py" inputs = [ + java_path_for_inputs, invoker.build_config, invoker.input_jar, _bytecode_checker_script, @@ -1880,19 +1923,21 @@ if (enable_java_templates) { rebase_path(invoker.input_jar, root_build_dir), "--stamp", rebase_path(outputs[0], root_build_dir), + "--chromium-output-dir", + rebase_path(root_build_dir, root_build_dir), "--direct-classpath-jars=@FileArg($_rebased_build_config:javac:classpath)", "--full-classpath-jars=@FileArg($_rebased_build_config:deps_info:javac_full_classpath)", "--full-classpath-gn-targets=@FileArg($_rebased_build_config:deps_info:javac_full_classpath_targets)", ] + if (auto_add_missing_java_deps) { + args += [ "--auto-add-deps" ] + } if (android_static_analysis == "build_server") { args += [ "--use-build-server" ] } - if (invoker.requires_android) { + if (invoker.include_android_sdk) { args += [ "--sdk-classpath-jars=@FileArg($_rebased_build_config:android:sdk_jars)" ] } - if (invoker.is_prebuilt) { - args += [ "--is-prebuilt" ] - } if (treat_warnings_as_errors) { args += [ "--warnings-as-errors" ] } @@ -1911,8 +1956,10 @@ if (enable_java_templates) { depfile = "$target_gen_dir/$target_name.d" inputs = [ + java_path_for_inputs, invoker.build_config, invoker.input_manifest, + _manifest_merger_jar_path, ] outputs = [ invoker.output_manifest ] @@ -1921,9 +1968,8 @@ if (enable_java_templates) { args = [ "--depfile", rebase_path(depfile, root_build_dir), - "--android-sdk-cmdline-tools", - rebase_path("${public_android_sdk_root}/cmdline-tools/latest", - root_build_dir), + "--manifest-merger-jar", + rebase_path(_manifest_merger_jar_path, root_build_dir), "--root-manifest", rebase_path(invoker.input_manifest, root_build_dir), "--output", @@ -1984,6 +2030,7 @@ if (enable_java_templates) { forward_variables_from(invoker, TESTONLY_AND_VISIBILITY + [ "deps", + "public_deps", "sources", ]) script = "//build/android/gyp/prepare_resources.py" @@ -2030,7 +2077,7 @@ if (enable_java_templates) { } # A template that is used to compile all resources needed by a binary - # (e.g. an android_apk or a junit_binary) into an intermediate .ar_ + # (e.g. an android_apk or a robolectric_binary) into an intermediate .ar_ # archive. It can also generate an associated .srcjar that contains the # final R.java sources for all resource packages the binary depends on. # @@ -2090,8 +2137,6 @@ if (enable_java_templates) { # # resource_values_filter_rules: (optional) # - # no_xml_namespaces: (optional) - # # png_to_webp: (optional) # If true, convert all PNG resources (except 9-patch files) to WebP. # @@ -2129,23 +2174,10 @@ if (enable_java_templates) { template("compile_resources") { forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) - _deps = [ - invoker.android_sdk_dep, - invoker.build_config_dep, - ] + _deps = invoker.deps + [ invoker.build_config_dep ] if (defined(invoker.android_manifest_dep)) { _deps += [ invoker.android_manifest_dep ] } - foreach(_dep, invoker.deps) { - _target_label = get_label_info(_dep, "label_no_toolchain") - if (filter_exclude([ _target_label ], _java_library_patterns) == [] && - filter_exclude([ _target_label ], _java_resource_patterns) != []) { - # Depend on the java libraries' transitive __assetres target instead. - _deps += [ "${_target_label}__assetres" ] - } else { - _deps += [ _dep ] - } - } if (defined(invoker.arsc_output)) { _arsc_output = invoker.arsc_output @@ -2157,17 +2189,18 @@ if (enable_java_templates) { _inputs = [ invoker.build_config, android_sdk_tools_bundle_aapt2, + android_sdk_jar, ] _rebased_build_config = rebase_path(invoker.build_config, root_build_dir) + _rebased_android_sdk_jar = rebase_path(android_sdk_jar, root_build_dir) _args = [ - "--include-resources=@FileArg($_rebased_build_config:android:sdk_jars)", + "--include-resources=$_rebased_android_sdk_jar", "--aapt2-path", rebase_path(android_sdk_tools_bundle_aapt2, root_build_dir), "--dependencies-res-zips=@FileArg($_rebased_build_config:deps_info:dependency_zips)", "--extra-res-packages=@FileArg($_rebased_build_config:deps_info:extra_package_names)", - "--extra-main-r-text-files=@FileArg($_rebased_build_config:deps_info:extra_main_r_text_files)", "--min-sdk-version=${invoker.min_sdk_version}", "--target-sdk-version=${invoker.target_sdk_version}", "--webp-cache-dir=obj/android-webp-cache", @@ -2181,9 +2214,6 @@ if (enable_java_templates) { "--srcjar-out", rebase_path(_final_srcjar_path, root_build_dir), ] - if (defined(invoker.no_xml_namespaces) && invoker.no_xml_namespaces) { - _args += [ "--no-xml-namespaces" ] - } if (defined(invoker.version_code)) { _args += [ "--version-code", @@ -2422,18 +2452,20 @@ if (enable_java_templates) { ] inputs += [ invoker.expected_android_manifest_base ] } - if (fail_on_android_expectations) { - args += [ "--fail-on-expectations" ] + if (defined(invoker.expected_android_manifest_version_code_offset)) { + args += [ + "--verification-version-code-offset", + invoker.expected_android_manifest_version_code_offset, + ] } - if (defined(invoker.extra_verification_manifest)) { - inputs += [ invoker.extra_verification_manifest ] + if (defined(invoker.expected_android_manifest_library_version_offset)) { args += [ - "--extra-verification-manifest", - rebase_path(invoker.extra_verification_manifest, root_build_dir), + "--verification-library-version-offset", + invoker.expected_android_manifest_library_version_offset, ] - if (defined(invoker.extra_verification_manifest_dep)) { - deps += [ invoker.extra_verification_manifest_dep ] - } + } + if (fail_on_android_expectations) { + args += [ "--fail-on-expectations" ] } } _deps += [ ":$_expectations_target" ] @@ -2528,7 +2560,10 @@ if (enable_java_templates) { script = "//build/android/gyp/unused_resources.py" depfile = "$target_gen_dir/${target_name}.d" _unused_resources_script = "$root_build_dir/bin/helper/unused_resources" - inputs = [ _unused_resources_script ] + inputs = [ + _unused_resources_script, + java_path_for_inputs, + ] outputs = [ invoker.output_config, invoker.output_r_txt, @@ -2634,6 +2669,48 @@ if (enable_java_templates) { } } + template("create_binary_profile") { + action_with_pydeps(target_name) { + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + forward_variables_from(invoker, [ "deps" ]) + script = "//build/android/gyp/binary_baseline_profile.py" + depfile = "$target_gen_dir/$target_name.d" + outputs = [ + invoker.binary_baseline_profile_path, + invoker.binary_baseline_profile_metadata_path, + ] + _profgen_path = + "$public_android_sdk_root/cmdline-tools/latest/bin/profgen" + _rebased_build_config = rebase_path(invoker.build_config, root_build_dir) + inputs = [ + invoker.build_config, + invoker.input_profile_path, + _profgen_path, + ] + args = [ + "--profgen", + rebase_path(_profgen_path, root_build_dir), + "--output-profile", + rebase_path(invoker.binary_baseline_profile_path, root_build_dir), + "--output-metadata", + rebase_path(invoker.binary_baseline_profile_metadata_path, + root_build_dir), + "--dex=@FileArg($_rebased_build_config:final_dex:path)", + "--input-profile-path", + rebase_path(invoker.input_profile_path, root_build_dir), + "--depfile", + rebase_path(depfile, root_build_dir), + ] + if (defined(invoker.proguard_mapping_path)) { + args += [ + "--proguard-mapping", + rebase_path(invoker.proguard_mapping_path, root_build_dir), + ] + inputs += [ invoker.proguard_mapping_path ] + } + } + } + # Creates a signed and aligned .apk. # # Variables @@ -2647,7 +2724,6 @@ if (enable_java_templates) { # and assets is consistent with the given expectation file. # expected_libs_and_assets_base: Treat expected_libs_and_assets as a diff # with this file as the base. - # jdk_libs_dex: Path to classes.dex for desugar_jdk_libs. # packaged_resources_path: Path to .ap_ to use. # output_apk_path: Output path for the generated .apk. # min_sdk_version: The minimum Android SDK version this target supports. @@ -2664,10 +2740,10 @@ if (enable_java_templates) { # keystore_path: Path to keystore to use for signing. # keystore_name: Key alias to use. # keystore_password: Keystore password. - # uncompress_shared_libraries: (optional, default false) Whether to store - # native libraries inside the APK uncompressed and page-aligned. template("package_apk") { forward_variables_from(invoker, TESTONLY_AND_VISIBILITY + [ "public_deps" ]) + _is_robolectric_apk = + defined(invoker.is_robolectric_apk) && invoker.is_robolectric_apk _deps = invoker.deps _native_lib_placeholders = [] if (defined(invoker.native_lib_placeholders)) { @@ -2680,16 +2756,8 @@ if (enable_java_templates) { } _script = "//build/android/gyp/apkbuilder.py" - _apksigner = "$android_sdk_build_tools/lib/apksigner.jar" - _zipalign = "$android_sdk_build_tools/zipalign" - _inputs = [ - invoker.build_config, - invoker.keystore_path, - invoker.packaged_resources_path, - _apksigner, - _zipalign, - ] + _inputs = [ invoker.packaged_resources_path ] _outputs = [ invoker.output_apk_path ] _data = [ invoker.output_apk_path ] @@ -2698,45 +2766,75 @@ if (enable_java_templates) { rebase_path(invoker.packaged_resources_path, root_build_dir) _rebased_packaged_apk_path = rebase_path(invoker.output_apk_path, root_build_dir) - _rebased_build_config = rebase_path(invoker.build_config, root_build_dir) _args = [ "--resource-apk=$_rebased_compiled_resources_path", "--output-apk=$_rebased_packaged_apk_path", - "--assets=@FileArg($_rebased_build_config:assets)", - "--uncompressed-assets=@FileArg($_rebased_build_config:uncompressed_assets)", - "--apksigner-jar", - rebase_path(_apksigner, root_build_dir), - "--zipalign-path", - rebase_path(_zipalign, root_build_dir), - "--key-path", - rebase_path(invoker.keystore_path, root_build_dir), - "--key-name", - invoker.keystore_name, - "--key-passwd", - invoker.keystore_password, "--min-sdk-version=${invoker.min_sdk_version}", - - # TODO(mlopatkin) We are relying on the fact that build_config is an APK - # build_config. - "--java-resources=@FileArg($_rebased_build_config:java_resources_jars)", ] - if (is_official_build) { - _args += [ "--best-compression" ] + + # system_image_stub_apk does not use a build_config.json. + if (defined(invoker.build_config)) { + _inputs += [ invoker.build_config ] + _rebased_build_config = rebase_path(invoker.build_config, root_build_dir) + _args += [ + "--assets=@FileArg($_rebased_build_config:assets)", + "--uncompressed-assets=@FileArg($_rebased_build_config:uncompressed_assets)", + ] + if (!_is_robolectric_apk) { + _args += [ "--java-resources=@FileArg($_rebased_build_config:java_resources_jars)" ] + } } - if (defined(invoker.uncompress_dex) && invoker.uncompress_dex) { - _args += [ "--uncompress-dex" ] + if (defined(invoker.extra_assets)) { + _args += [ "--assets=${invoker.extra_assets}" ] } - if (defined(invoker.uncompress_shared_libraries) && - invoker.uncompress_shared_libraries) { - _args += [ "--uncompress-shared-libraries=True" ] + if (!_is_robolectric_apk) { + _apksigner = "$android_sdk_build_tools/lib/apksigner.jar" + _zipalign = "$android_sdk_build_tools/zipalign" + _keystore_path = android_keystore_path + _keystore_name = android_keystore_name + _keystore_password = android_keystore_password + + if (defined(invoker.keystore_path)) { + _keystore_path = invoker.keystore_path + _keystore_name = invoker.keystore_name + _keystore_password = invoker.keystore_password + } + + _inputs += [ + _apksigner, + _zipalign, + _keystore_path, + ] + _args += [ + "--apksigner-jar", + rebase_path(_apksigner, root_build_dir), + "--zipalign-path", + rebase_path(_zipalign, root_build_dir), + "--key-path", + rebase_path(_keystore_path, root_build_dir), + "--key-name", + _keystore_name, + "--key-passwd", + _keystore_password, + ] + if (is_official_build) { + _args += [ "--best-compression" ] + } + } + if (defined(invoker.uncompress_dex)) { + _uncompress_dex = invoker.uncompress_dex + } else { + # Uncompressed dex support started on Android P. + _uncompress_dex = invoker.min_sdk_version >= 28 + } + + if (_uncompress_dex) { + _args += [ "--uncompress-dex" ] } if (defined(invoker.library_always_compress)) { _args += [ "--library-always-compress=${invoker.library_always_compress}" ] } - if (defined(invoker.library_renames)) { - _args += [ "--library-renames=${invoker.library_renames}" ] - } if (defined(invoker.dex_path)) { _inputs += [ invoker.dex_path ] _args += [ @@ -2744,13 +2842,6 @@ if (enable_java_templates) { rebase_path(invoker.dex_path, root_build_dir), ] } - if (defined(invoker.jdk_libs_dex)) { - _inputs += [ invoker.jdk_libs_dex ] - _args += [ - "--jdk-libs-dex-file", - rebase_path(invoker.jdk_libs_dex, root_build_dir), - ] - } if ((defined(invoker.loadable_modules) && invoker.loadable_modules != []) || defined(invoker.native_libs_filearg) || _native_lib_placeholders != []) { @@ -2798,10 +2889,10 @@ if (enable_java_templates) { _failure_file = "$expectations_failure_dir/" + string_replace(invoker.expected_libs_and_assets, "/", "_") - inputs = [ - invoker.build_config, - invoker.expected_libs_and_assets, - ] + inputs = [ invoker.expected_libs_and_assets ] + if (defined(invoker.build_config)) { + inputs += [ invoker.build_config ] + } deps = [ invoker.build_config_dep ] outputs = [ _actual_file, @@ -2845,29 +2936,26 @@ if (enable_java_templates) { } # Compile Java source files into a .jar file, potentially using an - # annotation processor, and/or the errorprone compiler. + # annotation processor, and/or the errorprone compiler. Also includes Kotlin + # source files in the resulting info file. # # Note that the only way to specify custom annotation processors is # by using build_config to point to a file that corresponds to a java-related # target that includes javac:processor_classes entries (i.e. there is no # variable here that can be used for this purpose). # - # Note also the peculiar use of java_files / java_sources_file. The content - # of the java_files list and the java_sources_file file must match exactly. - # This rule uses java_files only to list the inputs to the action that - # calls compile_java.py, but will pass the list of Java source files - # with the '@${java_sources_file}" command-line syntax. Not a problem in - # practice since this is only called from java_library_impl() that sets up - # the variables properly. + # Note also the peculiar use of source_files / target_sources_file. The content + # of the source_files list and the source files in target_sources_file file must + # match exactly. # # Variables: # main_target_name: Used when extracting srcjars for codesearch. - # java_files: Optional list of Java source file paths. + # source_files: Optional list of Java and Kotlin source file paths. # srcjar_deps: Optional list of .srcjar dependencies (not file paths). # The corresponding source files they contain will be compiled too. - # java_sources_file: Optional path to file containing list of Java source - # file paths. This must always be provided if java_files is not empty - # and must match it exactly. + # target_sources_file: Optional path to file containing list of source file + # paths. This must always be provided if java_files is not empty and the + # .java files in it must match the list of java_files exactly. # build_config: Path to the .build_config.json file of the corresponding # java_library_impl() target. The following entries will be used by this # template: javac:srcjars, deps_info:javac_full_classpath, @@ -2912,7 +3000,7 @@ if (enable_java_templates) { _srcjar_deps = [] if (defined(invoker.srcjar_deps)) { - _srcjar_deps += invoker.srcjar_deps + _srcjar_deps = invoker.srcjar_deps } _java_srcjars = [] @@ -2941,7 +3029,7 @@ if (enable_java_templates) { if (target_name == "chrome_java__header") { # Regression test for: https://crbug.com/1154302 - assert_no_deps = [ "//base:base_java__impl" ] + assert_no_deps = [ "//base:base_java__compile_java" ] } depfile = "$target_gen_dir/$target_name.d" @@ -2954,9 +3042,12 @@ if (enable_java_templates) { if (!invoker.enable_errorprone && !invoker.use_turbine) { outputs += [ invoker.output_jar_path + ".info" ] } - inputs = invoker.java_files + _java_srcjars + [ _build_config ] - if (invoker.java_files != []) { - inputs += [ invoker.java_sources_file ] + inputs = invoker.source_files + _java_srcjars + [ + _build_config, + java_path_for_inputs, + ] + if (invoker.source_files != []) { + inputs += [ invoker.target_sources_file ] } _rebased_build_config = rebase_path(_build_config, root_build_dir) @@ -2976,6 +3067,11 @@ if (enable_java_templates) { get_label_info(":${target_name}", "label_no_toolchain"), ] + # SDK jar must be first on classpath. + if (invoker.include_android_sdk) { + args += [ "--classpath=@FileArg($_rebased_build_config:android:sdk_interface_jars)" ] + } + if (defined(invoker.header_jar_path)) { inputs += [ invoker.header_jar_path ] args += [ @@ -2987,6 +3083,16 @@ if (enable_java_templates) { args += [ "--classpath=$_header_jar_classpath" ] } + if (defined(invoker.kotlin_jar_path)) { + inputs += [ invoker.kotlin_jar_path ] + _rebased_kotlin_jar_path = + rebase_path(invoker.kotlin_jar_path, root_build_dir) + args += [ + "--kotlin-jar-path=$_rebased_kotlin_jar_path", + "--classpath=$_rebased_kotlin_jar_path", + ] + } + if (invoker.use_turbine) { # Prefer direct deps for turbine as much as possible. args += [ "--classpath=@FileArg($_rebased_build_config:javac:interface_classpath)" ] @@ -3013,10 +3119,6 @@ if (enable_java_templates) { ] } - # Currently turbine does not support JDK11. - if (invoker.supports_android || invoker.use_turbine) { - args += [ "--java-version=1.8" ] - } if (use_java_goma) { args += [ "--gomacc-path=$goma_dir/gomacc" ] @@ -3029,9 +3131,6 @@ if (enable_java_templates) { if (enable_kythe_annotations && !invoker.enable_errorprone) { args += [ "--enable-kythe-annotations" ] } - if (invoker.requires_android) { - args += [ "--bootclasspath=@FileArg($_rebased_build_config:android:sdk_interface_jars)" ] - } if (_chromium_code) { args += [ "--chromium-code=1" ] if (treat_warnings_as_errors) { @@ -3074,8 +3173,9 @@ if (enable_java_templates) { [ "--additional-jar-file=" + rebase_path(file_tuple[0], root_build_dir) + ":" + file_tuple[1] ] } - if (invoker.java_files != []) { - args += [ "@" + rebase_path(invoker.java_sources_file, root_build_dir) ] + if (invoker.source_files != []) { + args += + [ "@" + rebase_path(invoker.target_sources_file, root_build_dir) ] } foreach(e, _javac_args) { args += [ "--javac-arg=" + e ] @@ -3083,26 +3183,92 @@ if (enable_java_templates) { } } - template("java_lib_group") { - forward_variables_from(invoker, [ "testonly" ]) - _group_name = invoker.group_name - not_needed([ "_group_name" ]) - group(target_name) { + # Compile Kotlin source files into .class files and store them in a .jar. + # This explicitly does not run annotation processing on the Kotlin files. + # Java files and srcjars are also passed to kotlinc for reference, although + # no .class files will be generated for any Java files. A subsequent call to + # javac will be required to actually compile Java files into .class files. + # + # This action also creates a "header" .jar file for the Kotlin source files. + # It is similar to using turbine to create headers for Java files, but since + # turbine does not support Kotlin files, this is done via a plugin for + # kotlinc instead, at the same time as compilation (whereas turbine is run as + # a separate action before javac compilation). + template("compile_kt") { + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + + _build_config = invoker.build_config + _chromium_code = invoker.chromium_code + + _srcjar_deps = [] + if (defined(invoker.srcjar_deps)) { + _srcjar_deps = invoker.srcjar_deps + } + + _java_srcjars = [] + foreach(dep, _srcjar_deps) { + _dep_gen_dir = get_label_info(dep, "target_gen_dir") + _dep_name = get_label_info(dep, "name") + _java_srcjars += [ "$_dep_gen_dir/$_dep_name.srcjar" ] + } + + action_with_pydeps(target_name) { + script = "//build/android/gyp/compile_kt.py" + depfile = "$target_gen_dir/$target_name.d" + deps = _srcjar_deps if (defined(invoker.deps)) { - deps = [] - foreach(_dep, invoker.deps) { - _target_label = get_label_info(_dep, "label_no_toolchain") - if (filter_exclude([ _target_label ], _java_library_patterns) == [] && - filter_exclude([ _target_label ], _java_resource_patterns) != - []) { - # This is a java library dep, so replace it. - deps += [ "${_target_label}__${_group_name}" ] - } else { - # Transitive java group targets should also include direct deps. - deps += [ _dep ] - } + deps += invoker.deps + } + + outputs = [ + invoker.output_jar_path, + invoker.output_interface_jar_path, + ] + inputs = invoker.source_files + _java_srcjars + [ + _build_config, + invoker.target_sources_file, + ] + + _rebased_build_config = rebase_path(_build_config, root_build_dir) + _rebased_output_jar_path = + rebase_path(invoker.output_jar_path, root_build_dir) + _rebased_output_interface_jar_path = + rebase_path(invoker.output_interface_jar_path, root_build_dir) + _rebased_java_srcjars = rebase_path(_java_srcjars, root_build_dir) + _rebased_depfile = rebase_path(depfile, root_build_dir) + _rebased_generated_dir = rebase_path( + "$target_gen_dir/${invoker.main_target_name}/generated_java", + root_build_dir) + args = [ + "--depfile=$_rebased_depfile", + "--generated-dir=$_rebased_generated_dir", + "--jar-path=$_rebased_output_jar_path", + "--interface-jar-path=$_rebased_output_interface_jar_path", + "--java-srcjars=$_rebased_java_srcjars", + ] + + # SDK jar must be first on classpath. + if (invoker.include_android_sdk) { + args += [ "--classpath=@FileArg($_rebased_build_config:android:sdk_interface_jars)" ] + } + + args += [ "--classpath=@FileArg($_rebased_build_config:deps_info:javac_full_interface_classpath)" ] + + if (use_java_goma) { + args += [ "--gomacc-path=$goma_dir/gomacc" ] + + # Override the default action_pool when goma is enabled. + pool = "//build/config/android:goma_javac_pool" + } + + if (_chromium_code) { + args += [ "--chromium-code" ] + if (treat_warnings_as_errors) { + args += [ "--warnings-as-errors" ] } } + + args += [ "@" + rebase_path(invoker.target_sources_file, root_build_dir) ] } } @@ -3157,7 +3323,7 @@ if (enable_java_templates) { # # Variables: # type: type of Java target, valid values: 'java_library', 'java_binary', - # 'junit_binary', 'java_annotation_processor', and 'android_apk' + # 'robolectric_binary', 'java_annotation_processor', and 'android_apk' # main_target_name: optional. If provided, overrides target_name when # creating sub-targets (e.g. "${main_target_name}__dex") and # some output files (e.g. "${main_target_name}.sources"). Only used @@ -3165,21 +3331,21 @@ if (enable_java_templates) { # be the name of the main APK target. # supports_android: Optional. True if target can run on Android. # requires_android: Optional. True if target can only run on Android. - # java_files: Optional list of Java source file paths for this target. + # source_files: Optional list of Java source file paths for this target. # javac_args: Optional list of extra arguments to pass to javac. # errorprone_args: Optional list of extra arguments to pass to. # srcjar_deps: Optional list of .srcjar targets (not file paths). The Java # source files they contain will also be compiled for this target. - # java_sources_file: Optional path to a file which will be written with - # the content of java_files. If not provided, the file will be written + # target_sources_file: Optional path to a file which will be written with + # the content of source_files. If not provided, the file will be written # under $target_gen_dir/$main_target_name.sources. Ignored if - # java_files is empty. If not + # sources_files is empty. If not # jar_path: Optional path to a prebuilt .jar file for this target. # Mutually exclusive with java_files and srcjar_deps. # output_name: Optional output name for the final jar path. Used to # determine the name of the final jar. Default is to use the same # name as jar_path, if provided, or main_target_name. - # main_class: Main Java class name for 'java_binary', 'junit_binary' and + # main_class: Main Java class name for 'java_binary', 'robolectric_binary' and # 'java_annotation_processor' target types. Should not be set for other # ones. # deps: Dependencies for this target. @@ -3204,18 +3370,12 @@ if (enable_java_templates) { # input_jars_paths: Optional list of additional .jar file paths, which will # be added to the compile-time classpath when building this target (but # not to the runtime classpath). - # desugar_jars_paths: Optional list of additional .jar file paths, which will - # be added to the desugar classpath when building this target (but not to - # any other classpath). This is only used to break dependency cycles. # gradle_treat_as_prebuilt: Cause generate_gradle.py to reference this # library via its built .jar rather than including its .java sources. # proguard_enabled: Optional. True to enable ProGuard obfuscation. # proguard_configs: Optional list of additional proguard config file paths. - # bypass_platform_checks: Optional. If True, platform checks will not - # be performed. They are used to verify that every target with - # requires_android only depends on targets that, at least supports_android. - # Similarly, if a target has !supports_android, then it cannot depend on - # any other target that has requires_android. + # is_robolectric: Optional. If True, this is a host side android test binary + # which is allowed to depend on other android targets. # include_java_resources: Optional. If True, include Java (not Android) # resources into final .jar file. # jar_excluded_patterns: Optional list of .class file patterns to exclude @@ -3251,8 +3411,6 @@ if (enable_java_templates) { # be stored in the APK. # secondary_abi_loadable_modules: Optional list of native libraries for # secondary ABI. - # uncompress_shared_libraries: Optional. True to store native shared - # libraries uncompressed and page-aligned. # proto_resources_path: The path of an zip archive containing the APK's # resources compiled to the protocol buffer format (instead of regular # binary xml + resources.arsc). @@ -3264,7 +3422,7 @@ if (enable_java_templates) { # list of string resources to keep in the base split APK for any bundle # that uses this target. # - # For 'java_binary' and 'junit_binary' targets only. Ignored by others: + # For 'java_binary' and 'robolectric_binary' targets only. Ignored by others: # # wrapper_script_name: Optional name for the generated wrapper script. # Default is main target name. @@ -3279,13 +3437,20 @@ if (enable_java_templates) { _is_prebuilt = defined(invoker.jar_path) _type = invoker.type _is_annotation_processor = _type == "java_annotation_processor" - _is_java_binary = _type == "java_binary" || _type == "junit_binary" + _is_java_binary = _type == "java_binary" || _type == "robolectric_binary" + _is_library = _type == "java_library" _supports_android = defined(invoker.supports_android) && invoker.supports_android _requires_android = defined(invoker.requires_android) && invoker.requires_android + _supports_host = !_requires_android + if (_is_java_binary || _is_annotation_processor) { + assert(!_requires_android && !_supports_android) + } + _bypass_platform_checks = defined(invoker.bypass_platform_checks) && invoker.bypass_platform_checks + _is_robolectric = defined(invoker.is_robolectric) && invoker.is_robolectric _invoker_deps = [] if (defined(invoker.deps)) { @@ -3300,19 +3465,16 @@ if (enable_java_templates) { _main_target_name = invoker.main_target_name } - if (defined(invoker.resources_package)) { - _resources_package = invoker.resources_package - } - - _java_files = [] + _source_files = [] if (defined(invoker.sources)) { - _java_files = invoker.sources + _source_files = invoker.sources } + _srcjar_deps = [] if (defined(invoker.srcjar_deps)) { _srcjar_deps = invoker.srcjar_deps } - _has_sources = _java_files != [] || _srcjar_deps != [] + _has_sources = _source_files != [] || _srcjar_deps != [] if (_is_prebuilt) { assert(!_has_sources) @@ -3339,10 +3501,10 @@ if (enable_java_templates) { _chromium_code = filter_exclude([ get_label_info(":$_main_target_name", "dir") ], [ "*\bthird_party\b*" ]) != [] - if (!_chromium_code && !_is_prebuilt && _java_files != []) { + if (!_chromium_code && !_is_prebuilt && _source_files != []) { # Unless third_party code has an org.chromium file in it. _chromium_code = - filter_exclude(_java_files, [ "*\bchromium\b*" ]) != _java_files + filter_exclude(_source_files, [ "*\bchromium\b*" ]) != _source_files } } @@ -3358,8 +3520,6 @@ if (enable_java_templates) { if (_is_prebuilt || _has_sources) { if (defined(invoker.output_name)) { _output_name = invoker.output_name - } else if (_is_prebuilt) { - _output_name = get_path_info(invoker.jar_path, "name") } else { _output_name = _main_target_name } @@ -3369,12 +3529,15 @@ if (enable_java_templates) { _build_device_jar = _type != "system_java_library" && _supports_android _jacoco_instrument = - use_jacoco_coverage && _chromium_code && _java_files != [] && + use_jacoco_coverage && _chromium_code && _source_files != [] && _build_device_jar && (!defined(invoker.testonly) || !invoker.testonly) if (defined(invoker.jacoco_never_instrument)) { _jacoco_instrument = !invoker.jacoco_never_instrument && _jacoco_instrument } + if (_jacoco_instrument) { + _invoker_deps += [ _jacoco_dep ] + } if (_build_host_jar) { # Jar files can be needed at runtime (by Robolectric tests or java binaries), @@ -3432,80 +3595,89 @@ if (enable_java_templates) { } } - if (_is_prebuilt || _has_sources) { - _java_res_deps = [] - _java_header_deps = [] - _java_impl_deps = [] - _non_java_deps = [] - foreach(_dep, _invoker_deps) { - _target_label = get_label_info(_dep, "label_no_toolchain") - if (filter_exclude([ _target_label ], _java_resource_patterns) == []) { - _java_res_deps += [ _dep ] - } else if (filter_exclude([ _target_label ], _java_library_patterns) == - []) { - # This is a java library dep, so it has header and impl targets. - _java_header_deps += [ "${_target_label}__header" ] - _java_impl_deps += [ "${_target_label}__impl" ] - } else { - _non_java_deps += [ _dep ] - } - } + _java_assetres_deps = filter_include(_invoker_deps, java_resource_patterns) - # Don't need to depend on the apk-under-test to be packaged. - if (defined(invoker.apk_under_test)) { - _java_header_deps += [ "${invoker.apk_under_test}__java__header" ] - _java_impl_deps += [ "${invoker.apk_under_test}__java__impl" ] - } + # Cannot use minus operator because it does not work when the operand has + # repeated entries. + _invoker_deps_minus_assetres = + filter_exclude(_invoker_deps, _java_assetres_deps) + _lib_deps = + filter_include(_invoker_deps_minus_assetres, java_library_patterns) + _non_java_deps = filter_exclude(_invoker_deps_minus_assetres, _lib_deps) - # These deps cannot be passed via invoker.deps since bundle_module targets - # have bundle_module.build_config without the __java suffix, so they are - # special and cannot be passed as regular deps to write_build_config. - if (defined(invoker.base_module_target)) { - _java_header_deps += [ "${invoker.base_module_target}__java__header" ] - _java_impl_deps += [ "${invoker.base_module_target}__java__impl" ] - } + _java_header_deps = [] # Turbine / ijar - _extra_java_deps = [] - if (_jacoco_instrument) { - _extra_java_deps += [ "//third_party/jacoco:jacocoagent_java" ] - } + # It would be more ideal to split this into __host and __javac, but we + # combine the two concepts to save on a group() target. + _java_host_deps = [] # Processed host .jar + javac .jar. + _java_validate_deps = [] # Bytecode checker & errorprone. + + foreach(_lib_dep, _lib_deps) { + # Expand //foo/java -> //foo/java:java + _lib_dep = get_label_info(_lib_dep, "label_no_toolchain") + _java_assetres_deps += [ "${_lib_dep}__assetres" ] + _java_header_deps += [ "${_lib_dep}__header" ] + _java_host_deps += [ "${_lib_dep}__host" ] + _java_validate_deps += [ "${_lib_dep}__validate" ] + } + + # APK and base module targets are special because: + # 1) They do not follow java target naming scheme (since they are not + # generally deps, there is no need for them to). + # 2) They do not bother to define a __host target. + # Since __host is used as an indirect dep for the compile_java artifacts, + # add the __compile_java target directly for them. + if (defined(invoker.apk_under_test)) { + _java_assetres_deps += [ "${invoker.apk_under_test}__java__assetres" ] + _java_header_deps += [ "${invoker.apk_under_test}__java__header" ] + _java_validate_deps += [ "${invoker.apk_under_test}__java__validate" ] + _java_host_deps += [ "${invoker.apk_under_test}__compile_java" ] + } + if (defined(invoker.base_module_target)) { + _java_assetres_deps += [ "${invoker.base_module_target}__java__assetres" ] + _java_header_deps += [ "${invoker.base_module_target}__java__header" ] + _java_validate_deps += [ "${invoker.base_module_target}__java__validate" ] + _java_host_deps += [ "${invoker.base_module_target}__compile_java" ] + } + + not_needed([ "_non_java_deps" ]) + + if (_is_prebuilt || _has_sources) { + # Classpath deps are used for header and dex targets, they do not need + # __assetres deps. + # _non_java_deps are needed for input_jars_paths that are generated. + _header_classpath_deps = + _java_header_deps + _non_java_deps + [ ":$_build_config_target_name" ] + + _javac_classpath_deps = + _java_host_deps + _non_java_deps + [ ":$_build_config_target_name" ] _include_android_sdk = _build_device_jar if (defined(invoker.include_android_sdk)) { _include_android_sdk = invoker.include_android_sdk } if (_include_android_sdk) { - _sdk_java_dep = "//third_party/android_sdk:android_sdk_java" if (defined(invoker.alternative_android_sdk_dep)) { - _sdk_java_dep = invoker.alternative_android_sdk_dep + _android_sdk_dep = invoker.alternative_android_sdk_dep + } else { + _android_sdk_dep = default_android_sdk_dep } - # This is an android_system_java_prebuilt target, so no headers. - _extra_java_deps += [ _sdk_java_dep ] + _header_classpath_deps += [ "${_android_sdk_dep}__header" ] + _javac_classpath_deps += [ "${_android_sdk_dep}" ] } - - # Classpath deps is used for header and dex targets, they do not need - # resource deps. - _classpath_deps = _java_header_deps + _non_java_deps + _extra_java_deps + - [ ":$_build_config_target_name" ] - - _full_classpath_deps = - _java_impl_deps + _java_res_deps + _non_java_deps + _extra_java_deps + - [ ":$_build_config_target_name" ] } # Often needed, but too hard to figure out when ahead of time. not_needed([ - "_classpath_deps", - "_full_classpath_deps", + "_header_classpath_deps", + "_javac_classpath_deps", ]) - if (_java_files != []) { - _java_sources_file = "$target_gen_dir/$_main_target_name.sources" - if (defined(invoker.java_sources_file)) { - _java_sources_file = invoker.java_sources_file - } - write_file(_java_sources_file, rebase_path(_java_files, root_build_dir)) + if (_source_files != []) { + _target_sources_file = "$target_gen_dir/$_main_target_name.sources" + write_file(_target_sources_file, + rebase_path(_source_files, root_build_dir)) } write_build_config(_build_config_target_name) { @@ -3516,14 +3688,20 @@ if (enable_java_templates) { "base_allowlist_rtxt_path", "gradle_treat_as_prebuilt", "input_jars_paths", + "preferred_dep", "low_classpath_priority", "main_class", + "mergeable_android_manifests", + "module_name", + "parent_module_target", "proguard_configs", "proguard_enabled", "proguard_mapping_path", "public_target_label", "r_text_path", "type", + "version_code", + "version_name", ]) if (_type == "android_apk" || _type == "android_app_bundle_module") { forward_variables_from( @@ -3540,10 +3718,7 @@ if (enable_java_templates) { "secondary_abi_shared_libraries_runtime_deps_file", "secondary_native_lib_placeholders", "shared_libraries_runtime_deps_file", - "static_library_dependent_targets", - "uncompress_shared_libraries", "library_always_compress", - "library_renames", ]) } if (_type == "android_apk") { @@ -3560,11 +3735,8 @@ if (enable_java_templates) { [ "add_view_trace_events", "base_module_target", - "is_base_module", "module_pathmap_path", "proto_resources_path", - "version_name", - "version_code", ]) } chromium_code = _chromium_code @@ -3580,19 +3752,23 @@ if (enable_java_templates) { if (defined(invoker.public_deps)) { possible_config_public_deps = invoker.public_deps } - if (defined(_extra_java_deps)) { - possible_config_deps += _extra_java_deps - } if (defined(apk_under_test)) { possible_config_deps += [ apk_under_test ] } + if (defined(_jacoco_instrument) && _jacoco_instrument) { + possible_config_deps += [ _jacoco_dep ] + } + if (defined(_android_sdk_dep)) { + possible_config_deps += [ _android_sdk_dep ] + } supports_android = _supports_android requires_android = _requires_android + is_robolectric = _is_robolectric bypass_platform_checks = _bypass_platform_checks - if (defined(_resources_package)) { - custom_package = _resources_package + if (defined(invoker.resources_package)) { + custom_package = invoker.resources_package } if (_is_prebuilt || _has_sources) { ijar_path = _final_ijar_path @@ -3605,8 +3781,8 @@ if (enable_java_templates) { device_jar_path = _device_processed_jar_path dex_path = _dex_path } - if (_java_files != []) { - java_sources_file = _java_sources_file + if (_source_files != []) { + target_sources_file = _target_sources_file } bundled_srcjars = [] @@ -3631,10 +3807,10 @@ if (enable_java_templates) { _header_target_name = "${target_name}__header" } - _public_deps = [] - _analysis_public_deps = [] - if (_has_sources) { + _kt_files = filter_include(_source_files, [ "*.kt" ]) + _java_files = filter_exclude(_source_files, [ "*.kt" ]) + if (defined(invoker.enable_errorprone)) { _enable_errorprone = invoker.enable_errorprone } else { @@ -3642,47 +3818,89 @@ if (enable_java_templates) { _java_files != [] && _chromium_code && use_errorprone_java_compiler } - if (defined(_resources_package) && _type == "java_library") { - assert(_requires_android || _bypass_platform_checks, + if (defined(invoker.resources_package) && _type == "java_library") { + # TODO(crbug.com/1296632): remove _bypass_platform_checks from the list + # once all robolectric targets have migrated to robolectric_library. + assert(_requires_android || _bypass_platform_checks || _is_robolectric, "Setting resources_package applicable only for " + - "android_library(), or java_library() with " + - "bypass_platform_checks=true. Target=$target_name") + "android_library(), or robolectric_library(). " + + "Target=$target_name") - # has _resources at the end so it looks like a resources pattern, since - # it does act like one (and other resources patterns need to depend on - # this before they can read its output R.txt). - _fake_rjava_target = "${target_name}__rjava_resources" + # Serves double purpose: Generating R.java, as well as being the + #__assetres target (instead of using a separate group). + _fake_rjava_target = "${target_name}__assetres" generate_r_java(_fake_rjava_target) { - deps = [ ":$_build_config_target_name" ] - possible_resource_deps = _invoker_deps + deps = [ ":$_build_config_target_name" ] + _java_assetres_deps + + _non_java_deps build_config = _build_config # Filepath has to be exactly this because compile_java looks for the # srcjar of srcjar_deps at this location $gen_dir/$target_name.srcjar srcjar_path = "$target_gen_dir/$target_name.srcjar" - package = _resources_package + package = invoker.resources_package } _srcjar_deps += [ ":$_fake_rjava_target" ] } + if (_kt_files != []) { + _kt_allowlist = [ + "android/java/src/org/chromium/chrome/browser/tabmodel/AsyncTabParamsManagerImpl.kt", + "java/androidx/core/os/BuildCompat.kt", + "webengine_shell_apk/src/org/chromium/webengine/shell/*.kt", + ] + _found_kt = filter_exclude(_kt_files, _kt_allowlist) + assert( + _found_kt == [], + "Only a files in the allowlist can be included for now. Feel " + "free to remove this assert when experimenting locally. Found: $_found_kt") + _compile_kt_target_name = "${_main_target_name}__compile_kt" + _kotlinc_jar_path = "$target_out_dir/$_output_name.kotlinc.jar" + _kotlin_interface_jar_path = + "$target_out_dir/$_output_name.kt-jvm-abi.jar" + assert(filter_include(_lib_deps, [ _kotlin_stdlib_dep ]) != [], + "${_main_target_name} is missing dep: $_kotlin_stdlib_dep") + compile_kt(_compile_kt_target_name) { + deps = _header_classpath_deps + output_jar_path = _kotlinc_jar_path + output_interface_jar_path = _kotlin_interface_jar_path + main_target_name = _main_target_name + build_config = _build_config + srcjar_deps = _srcjar_deps + source_files = _source_files + target_sources_file = _target_sources_file + chromium_code = _chromium_code + include_android_sdk = _is_robolectric || _requires_android + } + } + template("compile_java_helper") { _enable_errorprone = defined(invoker.enable_errorprone) && invoker.enable_errorprone if (_enable_errorprone) { # Rely on the header jar to provide all .class files so that it is # safe to omit generated files entirely for errorprone. - _filtered_java_files = - filter_exclude(_java_files, [ "$root_gen_dir*" ]) + _filtered_source_files = + filter_exclude(_source_files, [ "$root_gen_dir*" ]) } - if (_enable_errorprone && _filtered_java_files == []) { + if (_enable_errorprone && _filtered_source_files == []) { # Filtering out generated files resulted in no files left. group(target_name) { not_needed(invoker, "*") + deps = _header_classpath_deps } } else { compile_java(target_name) { - forward_variables_from(invoker, "*", TESTONLY_AND_VISIBILITY) + forward_variables_from(invoker, + "*", + TESTONLY_AND_VISIBILITY + [ "deps" ]) + deps = _header_classpath_deps + if (defined(invoker.deps)) { + deps += invoker.deps + } output_jar_path = invoker.output_jar_path + if (defined(invoker.kotlin_jar_path)) { + deps += [ ":$_compile_kt_target_name" ] + kotlin_jar_path = invoker.kotlin_jar_path + } enable_errorprone = _enable_errorprone use_turbine = defined(invoker.use_turbine) && invoker.use_turbine @@ -3690,22 +3908,17 @@ if (enable_java_templates) { build_config = _build_config if (_enable_errorprone) { - java_files = _filtered_java_files + source_files = _filtered_source_files } else { - java_files = _java_files + source_files = _source_files srcjar_deps = _srcjar_deps } - if (java_files != []) { - java_sources_file = _java_sources_file + if (source_files != []) { + target_sources_file = _target_sources_file } chromium_code = _chromium_code - supports_android = _supports_android - requires_android = _requires_android - if (!defined(deps)) { - deps = [] - } - deps += _classpath_deps + include_android_sdk = _is_robolectric || _requires_android } } } @@ -3728,8 +3941,10 @@ if (enable_java_templates) { output_jar_path = _final_ijar_path generated_jar_path = _generated_jar_path deps = _annotation_processor_deps + if (_kt_files != []) { + kotlin_jar_path = _kotlin_interface_jar_path + } } - _public_deps += [ ":$_header_target_name" ] _compile_java_target = "${_main_target_name}__compile_java" compile_java_helper(_compile_java_target) { @@ -3738,6 +3953,9 @@ if (enable_java_templates) { deps = [ ":$_header_target_name" ] header_jar_path = _final_ijar_path generated_jar_path = _generated_jar_path + if (_kt_files != []) { + kotlin_jar_path = _kotlinc_jar_path + } } if (_enable_errorprone) { _compile_java_errorprone_target = "${_main_target_name}__errorprone" @@ -3751,18 +3969,23 @@ if (enable_java_templates) { javac_args += invoker.errorprone_args } deps = [ ":$_header_target_name" ] + if (_kt_files != []) { + kotlin_jar_path = _kotlinc_jar_path + } header_jar_path = _final_ijar_path generated_jar_path = _generated_jar_path output_jar_path = "$target_out_dir/$target_name.errorprone.stamp" } - _analysis_public_deps += [ ":$_compile_java_errorprone_target" ] + _java_validate_deps += [ ":$_compile_java_errorprone_target" ] } } # _has_sources if (_is_prebuilt || _build_device_jar || _build_host_jar) { - _unprocessed_jar_deps = [] if (_has_sources) { - _unprocessed_jar_deps += [ ":$_compile_java_target" ] + _unprocessed_jar_deps = [ ":$_compile_java_target" ] + } else { + # jars might be generated by a dep. + _unprocessed_jar_deps = _non_java_deps } } @@ -3778,6 +4001,7 @@ if (enable_java_templates) { action_with_pydeps(_rewritten_jar_target_name) { script = "//build/android/gyp/bytecode_rewriter.py" inputs = [ + java_path_for_inputs, _rewriter_path, _build_config, _unprocessed_jar_path, @@ -3798,7 +4022,7 @@ if (enable_java_templates) { "--output-jar", rebase_path(_rewritten_jar, root_build_dir), ] - deps = _unprocessed_jar_deps + _full_classpath_deps + + deps = _unprocessed_jar_deps + _javac_classpath_deps + [ invoker.bytecode_rewriter_target ] } @@ -3815,56 +4039,72 @@ if (enable_java_templates) { input_jar = _unprocessed_jar_path output_jar = _final_ijar_path - # Normally ijar does not require any deps, but: - # 1 - Some jars are bytecode rewritten by _unprocessed_jar_deps. - # 2 - Other jars need to be unzipped by _non_java_deps. - # 3 - It is expected that depending on a header target implies depending - # on its transitive header target deps via _java_header_deps. - deps = _unprocessed_jar_deps + _non_java_deps + _java_header_deps + # ijar needs only _unprocessed_jar_deps, but this also needs to export + # __header target from deps. + deps = _unprocessed_jar_deps + _java_header_deps } - _public_deps += [ ":$_header_target_name" ] } if (_build_host_jar || _build_device_jar) { _enable_bytecode_checks = (!defined(invoker.enable_bytecode_checks) || - invoker.enable_bytecode_checks) && android_static_analysis != "off" + invoker.enable_bytecode_checks) && !_is_prebuilt && + android_static_analysis != "off" if (_enable_bytecode_checks) { - _bytecode_checks_target = "${target_name}__validate_classpath" - bytecode_processor(_bytecode_checks_target) { + _validate_target_name = "${target_name}__validate" + bytecode_processor(_validate_target_name) { forward_variables_from(invoker, [ "missing_classes_allowlist" ]) - deps = _unprocessed_jar_deps + _full_classpath_deps + + deps = _unprocessed_jar_deps + _javac_classpath_deps + [ ":$_build_config_target_name" ] - requires_android = _requires_android + data_deps = _java_validate_deps + if (defined(_compile_java_errorprone_target)) { + data_deps += [ ":$_compile_java_errorprone_target" ] + } + + include_android_sdk = _requires_android || _is_robolectric target_label = get_label_info(":${invoker.target_name}", "label_no_toolchain") input_jar = _unprocessed_jar_path build_config = _build_config - is_prebuilt = _is_prebuilt } - _analysis_public_deps += [ ":$_bytecode_checks_target" ] } else { not_needed(invoker, [ "missing_classes_allowlist" ]) } if (_build_host_jar) { - _process_host_jar_target_name = "${target_name}__process_host" + _process_host_jar_target_name = "${target_name}__host" process_java_library(_process_host_jar_target_name) { forward_variables_from(invoker, [ "jar_excluded_patterns", "jar_included_patterns", ]) + + # Robolectric tests require these to be on swarming. + data = [ _host_processed_jar_path ] input_jar_path = _unprocessed_jar_path - jar_deps = _unprocessed_jar_deps + _full_classpath_deps + deps = _unprocessed_jar_deps + _javac_classpath_deps output_jar_path = _host_processed_jar_path jacoco_instrument = _jacoco_instrument if (_jacoco_instrument) { - java_files = _java_files - java_sources_file = _java_sources_file + source_files = _source_files + target_sources_file = _target_sources_file + } + + # _java_host_deps isn't necessary for process_java_library(), but is + # necessary so that this target can be used to depend on transitive + # __device targets without the need to create a separate group() + # target. This trade-off works because process_java_library is fast. + deps += _java_host_deps + + # Add runtime_deps here since robolectric_binary does not depend on top-level group. + if (defined(invoker.data)) { + data += invoker.data + } + if (defined(invoker.data_deps)) { + data_deps = invoker.data_deps } } - _public_deps += [ ":${_process_host_jar_target_name}" ] } if (_build_device_jar) { @@ -3877,27 +4117,27 @@ if (enable_java_templates) { "jar_included_patterns", ]) input_jar_path = _unprocessed_jar_path - jar_deps = _unprocessed_jar_deps + _full_classpath_deps + + deps = _unprocessed_jar_deps + _javac_classpath_deps output_jar_path = _device_processed_jar_path jacoco_instrument = _jacoco_instrument if (_jacoco_instrument) { - java_files = _java_files - java_sources_file = _java_sources_file + source_files = _source_files + target_sources_file = _target_sources_file } } _process_device_jar_deps = [ ":${_process_device_jar_target_name}" ] - _public_deps += _process_device_jar_deps } else { assert(_unprocessed_jar_path == _device_processed_jar_path) - _process_device_jar_deps = - _unprocessed_jar_deps + _full_classpath_deps + _process_device_jar_deps = _unprocessed_jar_deps } - dex("${target_name}__dex") { + _dex_target_name = "${target_name}__dex" + dex(_dex_target_name) { forward_variables_from(invoker, [ - "desugar_jars_paths", "proguard_enable_obfuscation", + "repackage_classes", ]) input_class_jars = [ _device_processed_jar_path ] enable_desugar = _enable_desugar @@ -3912,25 +4152,38 @@ if (enable_java_templates) { if (enable_desugar) { # Desugaring with D8 requires full classpath. build_config = _build_config - final_ijar_path = _final_ijar_path - deps += _classpath_deps + [ ":$_header_target_name" ] + unprocessed_jar_path = _unprocessed_jar_path + deps += _header_classpath_deps + _unprocessed_jar_deps } enable_multidex = false is_library = true + + # proguard_configs listed on java_library targets need to be marked + # as inputs to at least one target so that "gn analyze" will know + # about them. Although this target doesn't use them, it's a convenient spot + # to list them. + # https://crbug.com/827197 + if (compute_inputs_for_analyze && defined(invoker.proguard_configs)) { + inputs = invoker.proguard_configs + + # For the aapt-generated proguard rules. + deps += _non_java_deps + _srcjar_deps + } } - _public_deps += [ ":${target_name}__dex" ] } } if (_is_java_binary) { # Targets might use the generated script while building, so make it a dep # rather than a data_dep. - java_binary_script("${target_name}__java_binary_script") { + _java_binary_script_target_name = "${target_name}__java_binary_script" + java_binary_script(_java_binary_script_target_name) { forward_variables_from(invoker, [ "tiered_stop_at_level_one", "main_class", + "max_heap_size", "wrapper_script_args", ]) build_config = _build_config @@ -3939,58 +4192,113 @@ if (enable_java_templates) { script_name = invoker.wrapper_script_name } deps = [ ":$_build_config_target_name" ] + if (_is_robolectric) { + # For robolectric tests, we also add the normal sdk jar to the + # classpath since whenever we start using a new Android SDK, + # robolectric doesn't support it, and they often take a few months to + # support it. This causes issues when mocking classes that reference + # new SDK classes, so providing our normal SDK will allow these + # classes to resolve. For an example, see crbug.com/1350963. + extra_classpath_jars = [ android_sdk_jar ] + } } - _public_deps += [ ":${target_name}__java_binary_script" ] } - # The __impl target contains all non-analysis steps for this template. - # Having this separated out from the main target (which contains analysis - # steps) allows analysis steps for this target to be run concurrently with - # the non-analysis steps of other targets that depend on this one. - group("${target_name}__impl") { - public_deps = _public_deps - - # proguard_configs listed on java_library targets need to be marked - # as inputs to at least one target so that "gn analyze" will know - # about them. Although this target doesn't use them, it's a convenient spot - # to list them. - # https://crbug.com/827197 - if (compute_inputs_for_analyze && defined(invoker.proguard_configs)) { - assert(_build_host_jar || _build_device_jar) - data = invoker.proguard_configs + if (!defined(_validate_target_name)) { + _validate_target_name = "${target_name}__validate" - # For the aapt-generated proguard rules. - deps = _non_java_deps + _srcjar_deps + # Allow other targets to depend on this __validate one. + group(_validate_target_name) { + deps = _java_validate_deps } } - java_lib_group("${target_name}__assetres") { - deps = _invoker_deps - group_name = "assetres" + if (_supports_host && !defined(_process_host_jar_target_name)) { + group("${target_name}__host") { + deps = _java_host_deps + } + } - if (defined(_fake_rjava_target)) { - deps += [ ":$_fake_rjava_target" ] + # robolectric_library can depend on java_library, so java_library must + # define __assetres. + if ((_is_library || _supports_android || _is_robolectric) && + !defined(_fake_rjava_target)) { + group("${target_name}__assetres") { + if (_supports_android || _is_robolectric) { + deps = _java_assetres_deps + } } } + # The top-level group is used: + # 1) To allow building the target explicitly via ninja, + # 2) To trigger all analysis deps, + # 3) By custom action() targets that want to use artifacts as inputs. group(target_name) { forward_variables_from(invoker, [ "assert_no_deps", "data", "data_deps", - "deps", - "public_deps", "visibility", ]) - if (!defined(public_deps)) { + if (_requires_android || (_supports_android && _is_library)) { + # For non-robolectric targets, depend on other java target's top-level + # groups so that the __dex step gets depended on. + forward_variables_from(invoker, + [ + "deps", + "public_deps", + ]) + if (!defined(deps)) { + deps = [] + } + if (!defined(public_deps)) { + public_deps = [] + } + } else { + # For robolectric targets, depend only on non-java deps and the specific + # subtargets below, which will not include __dex. + deps = _non_java_deps public_deps = [] + if (defined(invoker.public_deps)) { + public_deps += + filter_exclude(invoker.public_deps, java_target_patterns) + } + } + if (defined(_jacoco_instrument) && _jacoco_instrument) { + deps += [ _jacoco_dep ] + } + if (defined(invoker.apk_under_test)) { + deps += [ invoker.apk_under_test ] + } + if (defined(_process_device_jar_target_name)) { + public_deps += [ ":$_process_device_jar_target_name" ] + } + if (defined(_dex_target_name)) { + public_deps += [ ":$_dex_target_name" ] + } + if (_supports_android && _is_library) { + # Robolectric targets define __assetres, but there's no need to build it + # by default. + public_deps += [ ":${target_name}__assetres" ] + } + if (_supports_host) { + # android_* targets define __host, but there's no need to build it by + # default. + public_deps += [ ":${target_name}__host" ] + } + if (_is_java_binary) { + public_deps += [ ":$_java_binary_script_target_name" ] } - public_deps += [ ":${target_name}__impl" ] if (!defined(data_deps)) { data_deps = [] } - data_deps += _analysis_public_deps + if (defined(_validate_target_name)) { + data_deps += [ ":$_validate_target_name" ] + } else { + data_deps += _java_validate_deps + } } } } @@ -4030,8 +4338,6 @@ template("create_android_app_bundle_module") { _rebased_build_config = rebase_path(invoker.build_config, root_build_dir) _rebased_native_libraries_config = rebase_path(invoker.native_libraries_config, root_build_dir) - _proguard_enabled = - defined(invoker.proguard_enabled) && invoker.proguard_enabled forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) _deps = invoker.deps @@ -4066,10 +4372,7 @@ template("create_android_app_bundle_module") { ":native:secondary_native_library_placeholders)", "--android-abi=$android_app_abi", "--min-sdk-version=${invoker.min_sdk_version}", - "--uncompress-shared-libraries=@FileArg(" + - "$_rebased_build_config:native:uncompress_shared_libraries)", "--library-always-compress=@FileArg($_rebased_build_config:native:library_always_compress)", - "--library-renames=@FileArg($_rebased_build_config:native:library_renames)", ] if (defined(android_app_secondary_abi)) { _rebased_secondary_abi_native_libraries_config = @@ -4088,6 +4391,9 @@ template("create_android_app_bundle_module") { if (defined(invoker.uncompress_dex) && invoker.uncompress_dex) { _args += [ "--uncompress-dex" ] } + if (defined(invoker.extra_assets)) { + _args += [ "--assets=${invoker.extra_assets}" ] + } # Use either provided dex path or build config path based on type of module. if (defined(invoker.dex_path)) { @@ -4098,20 +4404,6 @@ template("create_android_app_bundle_module") { _args += [ "--dex-file=@FileArg($_rebased_build_config:final_dex:path)" ] } - # The library is imported via proguard when proguard is enabled. - if (!_proguard_enabled && enable_jdk_library_desugaring && - invoker.module_name == "base") { - _all_jdk_libs = "//build/android:all_jdk_libs" - _deps += [ _all_jdk_libs ] - _jdk_libs_dex = - get_label_info(_all_jdk_libs, "target_out_dir") + "/all_jdk_libs.l8.dex" - _inputs += [ _jdk_libs_dex ] - _args += [ - "--jdk-libs-dex-file", - rebase_path(_jdk_libs_dex, root_build_dir), - ] - } - if (treat_warnings_as_errors) { _args += [ "--warnings-as-errors" ] } @@ -4176,59 +4468,6 @@ template("create_android_app_bundle_module") { } } -# Splits input dex file(s) based on given feature jars into seperate dex files -# for each feature. -# -# Variables: -# proguard_mapping: Path to input proguard mapping produced by synchronized -# proguarding. -# input_dex_zip: Path to zipped dex files to split. -# all_modules: Path to list of all modules. Each Module must have -# build_config, name, and build_config_target properties. -# feature_jars_args: Optional list of args to be passed to dexsplitter.py. -# If used should include the jars owned by each feature (in the same order -# as all_modules). Allows invoker to pull the list of jars from a different -# .build_config.json than the module's .build_config. -template("dexsplitter") { - action_with_pydeps(target_name) { - forward_variables_from(invoker, [ "deps" ]) - script = "//build/android/gyp/dexsplitter.py" - _stamp = "${target_gen_dir}/${target_name}.stamp" - outputs = [ _stamp ] - - depfile = "${target_gen_dir}/${target_name}.d" - args = [ - "--stamp", - rebase_path(_stamp, root_build_dir), - "--depfile", - rebase_path(depfile, root_build_dir), - "--r8-path", - rebase_path(_r8_path, root_build_dir), - "--input-dex-zip", - rebase_path(invoker.input_dex_zip, root_build_dir), - "--proguard-mapping-file", - rebase_path(invoker.proguard_mapping, root_build_dir), - ] - - foreach(_feature_module, invoker.all_modules) { - _rebased_module_build_config = - rebase_path(_feature_module.build_config, root_build_dir) - args += [ - "--feature-name", - _feature_module.name, - "--dex-dest=@FileArg($_rebased_module_build_config:final_dex:path)", - ] - if (!defined(invoker.feature_jars_args)) { - args += [ "--feature-jars=@FileArg($_rebased_module_build_config:deps_info:device_classpath)" ] - } - deps += [ _feature_module.build_config_target ] - } - if (defined(invoker.feature_jars_args)) { - args += invoker.feature_jars_args - } - } -} - # Allots native libraries depended on by feature modules to the module the # libraries should be packaged into. The packaging module may be different from # the dependee module in case a library is depended on by multiple modules. In diff --git a/build/config/android/jni.gni b/build/config/android/jni.gni new file mode 100644 index 0000000..0b97fa9 --- /dev/null +++ b/build/config/android/jni.gni @@ -0,0 +1,293 @@ +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/config/android/config.gni") +import("//build/config/python.gni") +import("//build/partitioned_shared_library.gni") + +declare_args() { + # Enables JNI multiplexing to reduce JNI native methods overhead. + allow_jni_multiplexing = false + + # Use hashed symbol names to reduce JNI symbol overhead. + use_hashed_jni_names = !is_java_debug +} + +# Use a dedicated include dir so that files can #include headers from other +# toolchains without affecting non-JNI #includes. +if (target_os == "android") { + jni_headers_dir = "$root_build_dir/gen/jni_headers" +} else { + # Chrome OS builds cannot share gen/ directories because is_android=false + # within default_toolchain. + jni_headers_dir = "$root_gen_dir/jni_headers" +} + +template("jni_sources_list") { + generated_file(target_name) { + forward_variables_from(invoker, + TESTONLY_AND_VISIBILITY + [ + "deps", + "walk_keys", + ]) + outputs = [ invoker.output ] + data_keys = [ "jni_source_files" ] + rebase = root_build_dir + metadata = { + # This target is just collecting source files used - this is not a + # legitimate dependency. + shared_libraries_barrier = [] + } + } +} + +# Declare a jni registration target. +# +# This target generates a srcjar containing a copy of GEN_JNI.java, which has +# the native methods of all dependent java files. It can also create a .h file +# for use with manual JNI registration. +# +# The script does not scan any generated sources (those within .srcjars, or +# within root_build_dir). This could be fixed by adding deps & logic to scan +# .srcjars, but isn't currently needed. +# +# See third_party/jni_zero/jni_registration_generator.py for more info +# about the format of the header file. +# +# Variables +# java_targets: List of android_* targets that comprise your app. +# native_deps: List of shared_library targets that comprise your app. +# manual_jni_registration: Manually do JNI registration - required for feature +# splits which provide their own native library. (optional) +# namespace: Registration functions will be wrapped into this. (optional) +# require_native_mocks: Enforce that any native calls using +# org.chromium.base.annotations.NativeMethods must have a mock set +# (optional). +# enable_native_mocks: Allow native calls using +# org.chromium.base.annotations.NativeMethods to be mocked in tests +# (optional). +# +# Example +# generate_jni_registration("chrome_jni_registration") { +# java_targets = [ ":chrome_public_apk" ] +# manual_jni_registration = false +# } +template("generate_jni_registration") { + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + if (defined(invoker.native_deps)) { + _native_sources_list = "$target_gen_dir/$target_name.nativesources.txt" + jni_sources_list("${target_name}__native_sources") { + deps = invoker.native_deps + output = _native_sources_list + } + } + + _java_sources_list = "$target_gen_dir/$target_name.javasources.txt" + jni_sources_list("${target_name}__java_sources") { + deps = invoker.java_targets + output = _java_sources_list + + # When apk or bundle module targets are uses, do not pull metadata from + # their native library deps. + walk_keys = [ "java_walk_keys" ] + } + + action_with_pydeps(target_name) { + script = "//third_party/jni_zero/jni_zero.py" + inputs = [] + + # Cannot depend on jni_sources_list targets since they likely depend on + # this target via srcjar_deps. Depfiles are used to add the dep instead. + deps = [] + _srcjar_output = "$target_gen_dir/$target_name.srcjar" + outputs = [ _srcjar_output ] + depfile = "$target_gen_dir/$target_name.d" + + args = [ + "generate-final", + "--srcjar-path", + rebase_path(_srcjar_output, root_build_dir), + "--depfile", + rebase_path(depfile, root_build_dir), + "--java-sources-file", + rebase_path(_java_sources_list, root_build_dir), + ] + + if (defined(_native_sources_list)) { + args += [ + "--native-sources-file", + rebase_path(_native_sources_list, root_build_dir), + ] + } + + if (defined(invoker.include_testonly)) { + _include_testonly = invoker.include_testonly + } else { + _include_testonly = defined(testonly) && testonly + } + if (_include_testonly) { + args += [ "--include-test-only" ] + } + + if (use_hashed_jni_names) { + args += [ "--use-proxy-hash" ] + } + + if (defined(invoker.enable_native_mocks) && invoker.enable_native_mocks) { + args += [ "--enable-proxy-mocks" ] + + if (defined(invoker.require_native_mocks) && + invoker.require_native_mocks) { + args += [ "--require-mocks" ] + } + } + + if (defined(invoker.remove_uncalled_jni) && invoker.remove_uncalled_jni) { + args += [ "--remove-uncalled-methods" ] + } + if (defined(invoker.add_stubs_for_missing_jni) && + invoker.add_stubs_for_missing_jni) { + args += [ "--add-stubs-for-missing-native" ] + } + + _manual_jni_registration = defined(invoker.manual_jni_registration) && + invoker.manual_jni_registration + _enable_jni_multiplexing = defined(invoker.enable_jni_multiplexing) && + invoker.enable_jni_multiplexing + if (_manual_jni_registration) { + args += [ "--manual-jni-registration" ] + } + if (_enable_jni_multiplexing) { + args += [ "--enable-jni-multiplexing" ] + } + + if (_manual_jni_registration || _enable_jni_multiplexing) { + _subdir = rebase_path(target_gen_dir, root_gen_dir) + _jni_header_output = + "$jni_headers_dir/$_subdir/${target_name}_generated.h" + outputs += [ _jni_header_output ] + args += [ + "--header-path", + rebase_path(_jni_header_output, root_build_dir), + ] + + # This gives targets depending on this registration access to our generated header. + public_configs = [ "//build/config/android:jni_include_dir" ] + } + + if (defined(invoker.namespace)) { + args += [ "--namespace=${invoker.namespace}" ] + } + + if (defined(invoker.module_name)) { + args += [ "--module-name=${invoker.module_name}" ] + } + } +} + +# This is a wrapper around an underlying native target which inserts JNI +# registration. +# +# The registration is based on the closure of the native target's generate_jni +# transitive dependencies. Additionally, we use provided java_targets to assert +# that our native and Java sides line up. +# +# In order to depend on the JNI registration, use +# __jni_registration. +template("_native_with_jni") { + _needs_native_dep = + (defined(invoker.manual_jni_registration) && + invoker.manual_jni_registration) || allow_jni_multiplexing + if (_needs_native_dep || current_toolchain == default_toolchain) { + _jni_registration_target_name = "${target_name}__jni_registration" + } + + if (current_toolchain == default_toolchain) { + generate_jni_registration(_jni_registration_target_name) { + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + native_deps = invoker.deps + + if (allow_jni_multiplexing) { + enable_jni_multiplexing = true + } + if (defined(invoker.testonly) && invoker.testonly) { + enable_native_mocks = true + add_stubs_for_missing_jni = true + remove_uncalled_jni = true + } + forward_variables_from(invoker, + [ + "add_stubs_for_missing_jni", + "java_targets", + "manual_jni_registration", + "module_name", + "namespace", + "remove_uncalled_jni", + ]) + } + } else { + not_needed(invoker, + [ + "add_stubs_for_missing_jni", + "java_targets", + "manual_jni_registration", + "module_name", + "namespace", + "remove_uncalled_jni", + ]) + } + + if (!defined(invoker.enable_target) || invoker.enable_target) { + target(invoker.target_type, target_name) { + deps = invoker.deps + if (_needs_native_dep) { + deps += [ ":$_jni_registration_target_name($default_toolchain)" ] + } + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + forward_variables_from(invoker, "*", TESTONLY_AND_VISIBILITY + [ "deps" ]) + } + } else { + not_needed(invoker, "*") + if (current_toolchain != default_toolchain) { + not_needed([ "target_name" ]) + } + } +} + +# native_with_jni for shared libraries - see _native_with_jni for details. +template("shared_library_with_jni") { + _native_with_jni(target_name) { + forward_variables_from(invoker, "*", TESTONLY_AND_VISIBILITY) + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + target_type = "shared_library" + } +} +set_defaults("shared_library_with_jni") { + configs = default_shared_library_configs +} + +# native_with_jni for partitioned shared libraries - see _native_with_jni for +# details. +template("partitioned_shared_library_with_jni") { + _native_with_jni(target_name) { + forward_variables_from(invoker, "*", TESTONLY_AND_VISIBILITY) + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + target_type = "partitioned_shared_library" + } +} +set_defaults("partitioned_shared_library_with_jni") { + configs = default_shared_library_configs +} + +# native_with_jni for components - see _native_with_jni for details. +template("component_with_jni") { + _native_with_jni(target_name) { + forward_variables_from(invoker, "*", TESTONLY_AND_VISIBILITY) + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + target_type = "component" + } +} +set_defaults("component_with_jni") { + configs = default_component_configs +} diff --git a/build/config/android/linker_version_script.gni b/build/config/android/linker_version_script.gni index 7dab722..77d9983 100644 --- a/build/config/android/linker_version_script.gni +++ b/build/config/android/linker_version_script.gni @@ -3,6 +3,7 @@ # found in the LICENSE file. import("//build/config/android/config.gni") +import("//build/config/android/jni.gni") import("//build/config/python.gni") # Generate a custom linker version script that can later be used with @@ -23,14 +24,11 @@ template("generate_linker_version_script") { inputs = [] args = [ "--output=" + rebase_path(invoker.linker_script, root_build_dir) ] - if (defined(invoker.export_java_symbols) && invoker.export_java_symbols) { - args += [ "--export-java-symbols" ] - if (defined(invoker.testonly) && invoker.testonly) { - args += [ "--export-fortesting-java-symbols" ] - } - if (allow_jni_multiplexing) { - args += [ "--jni-multiplexing" ] - } + if (defined(invoker.testonly) && invoker.testonly) { + args += [ "--export-fortesting-java-symbols" ] + } + if (allow_jni_multiplexing) { + args += [ "--jni-multiplexing" ] } if (defined(invoker.export_feature_registrations) && diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni index 191998b..1e42bf0 100644 --- a/build/config/android/rules.gni +++ b/build/config/android/rules.gni @@ -1,26 +1,22 @@ -# Copyright 2014 The Chromium Authors. All rights reserved. +# Copyright 2014 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # Do not add any imports to non-//build directories here. # Some projects (e.g. V8) do not have non-build directories DEPS'ed in. - -import("//build/config/android/channel.gni") import("//build/config/android/config.gni") -import("//build/config/android/internal_rules.gni") +import("//build/config/android/copy_ex.gni") +import("//build/config/android/jni.gni") import("//build/config/clang/clang.gni") import("//build/config/compiler/compiler.gni") import("//build/config/coverage/coverage.gni") +import("//build/config/profiling/profiling.gni") import("//build/config/python.gni") import("//build/config/rts.gni") +import("//build/config/sanitizers/sanitizers.gni") import("//build/config/zip.gni") import("//build/toolchain/toolchain.gni") - -assert(is_android) - -declare_args() { - enable_jni_tracing = false -} +assert(is_android || is_robolectric) if (target_cpu == "arm") { _sanitizer_arch = "arm" @@ -28,6 +24,8 @@ if (target_cpu == "arm") { _sanitizer_arch = "aarch64" } else if (target_cpu == "x86") { _sanitizer_arch = "i686" +} else if (target_cpu == "riscv64") { + _sanitizer_arch = "riscv64" } _sanitizer_runtimes = [] @@ -38,6 +36,8 @@ if (use_cfi_diag || is_ubsan || is_ubsan_security || is_ubsan_vptr) { _BUNDLETOOL_JAR_PATH = "//third_party/android_build_tools/bundletool/bundletool.jar" +_JAVAP_PATH = "//third_party/jdk/current/bin/javap" + # Creates a dist directory for a native executable. # # Running a native executable on a device requires all the shared library @@ -124,107 +124,152 @@ template("create_native_executable_dist") { } if (enable_java_templates) { - import("//build/config/sanitizers/sanitizers.gni") + if (is_android) { + import("//build/config/android/internal_rules.gni") + } # JNI target implementation. See generate_jni or generate_jar_jni for usage. - template("generate_jni_impl") { - _jni_output_dir = "${target_gen_dir}/${target_name}" - if (defined(invoker.jni_generator_include)) { - _jni_generator_include = invoker.jni_generator_include - _jni_generator_include_deps = [] + template("_generate_jni_impl") { + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + if (current_toolchain != default_toolchain && target_os == "android") { + # Rather than regenerating .h files in secondary toolchains, re-use the + # ones from the primary toolchain by depending on it and adding the + # root gen directory to the include paths. + # https://crbug.com/1369398 + group(target_name) { + not_needed(invoker, "*") + public_deps = [ ":$target_name($default_toolchain)" ] + public_configs = + [ "//build/config/android:jni_include_dir($default_toolchain)" ] + } } else { - _jni_generator_include = - "//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 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", - "//build:chromeos_buildflags", - ] - } + action_with_pydeps(target_name) { + _subdir = rebase_path(target_gen_dir, root_gen_dir) + _jni_output_dir = "$jni_headers_dir/$_subdir/$target_name" + if (defined(invoker.jni_generator_include)) { + _jni_generator_include = invoker.jni_generator_include + _jni_generator_include_deps = [] + } else { + _jni_generator_include = + "//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 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", + "//build:chromeos_buildflags", + ] + } - action_with_pydeps(target_name) { - # The sources aren't compiled so don't check their dependencies. - check_includes = false - script = "//base/android/jni_generator/jni_generator.py" - forward_variables_from(invoker, - TESTONLY_AND_VISIBILITY + [ - "deps", - "public_deps", - ]) - if (!defined(public_deps)) { - public_deps = [] - } - public_deps += _jni_generator_include_deps - inputs = [] - args = [ - "--ptr_type=long", - "--includes", - rebase_path(_jni_generator_include, _jni_output_dir), - ] + # The sources aren't compiled so don't check their dependencies. + check_includes = false + script = "//third_party/jni_zero/jni_zero.py" + forward_variables_from(invoker, + [ + "deps", + "metadata", + "public_deps", + ]) + if (!defined(public_deps)) { + public_deps = [] + } + public_deps += _jni_generator_include_deps - if (defined(invoker.classes)) { - if (defined(invoker.jar_file)) { - _jar_file = invoker.jar_file + public_configs = [ "//build/config/android:jni_include_dir" ] + if (defined(visibility)) { + # Allow dependency on ourselves from secondary toolchain. + visibility += [ ":$target_name" ] + } + + inputs = [] + outputs = [] + args = [] + if (defined(invoker.classes)) { + args += [ "from-jar" ] } else { - _jar_file = android_sdk_jar + args += [ "from-source" ] } - inputs += [ _jar_file ] args += [ - "--jar_file", - rebase_path(_jar_file, root_build_dir), + "--output-dir", + rebase_path(_jni_output_dir, root_build_dir), + "--extra-include", + rebase_path(_jni_generator_include, _jni_output_dir), ] - _input_args = invoker.classes - _input_names = invoker.classes - if (defined(invoker.always_mangle) && invoker.always_mangle) { - args += [ "--always_mangle" ] - } - if (defined(invoker.unchecked_exceptions) && - invoker.unchecked_exceptions) { - args += [ "--unchecked_exceptions" ] - } - } else { - assert(defined(invoker.sources)) - inputs += invoker.sources - _input_args = rebase_path(invoker.sources, root_build_dir) - _input_names = invoker.sources - if (use_hashed_jni_names) { - args += [ "--use_proxy_hash" ] + + if (defined(invoker.classes)) { + if (is_robolectric) { + not_needed(invoker, [ "jar_file" ]) + } else { + if (defined(invoker.jar_file)) { + _jar_file = invoker.jar_file + } else { + _jar_file = android_sdk_jar + } + inputs += [ + _jar_file, + _JAVAP_PATH, + ] + args += [ + "--jar-file", + rebase_path(_jar_file, root_build_dir), + "--javap", + rebase_path(_JAVAP_PATH, root_build_dir), + ] + } + _input_args = invoker.classes + _input_names = invoker.classes + if (defined(invoker.unchecked_exceptions) && + invoker.unchecked_exceptions) { + args += [ "--unchecked-exceptions" ] + } + } else { + assert(defined(invoker.sources)) + _srcjar_output = "$target_gen_dir/$target_name.srcjar" + args += [ + "--srcjar-path", + rebase_path(_srcjar_output, root_build_dir), + ] + outputs += [ _srcjar_output ] + inputs += invoker.sources + _input_args = rebase_path(invoker.sources, root_build_dir) + _input_names = invoker.sources + if (use_hashed_jni_names) { + args += [ "--use-proxy-hash" ] + } + + if (defined(invoker.enable_jni_multiplexing) && + invoker.enable_jni_multiplexing) { + args += [ "--enable-jni-multiplexing" ] + } + if (defined(invoker.namespace)) { + args += [ "--namespace=${invoker.namespace}" ] + } } - if (defined(invoker.namespace)) { - args += [ "-n ${invoker.namespace}" ] + if (defined(invoker.split_name)) { + args += [ "--split-name=${invoker.split_name}" ] } - } - if (defined(invoker.split_name)) { - args += [ "--split_name=${invoker.split_name}" ] - } - outputs = [] - foreach(_name, _input_names) { - _name_part = get_path_info(_name, "name") - outputs += [ "${_jni_output_dir}/${_name_part}_jni.h" ] - } + foreach(_name, _input_names) { + _name = get_path_info(_name, "name") + "_jni.h" + outputs += [ "$_jni_output_dir/$_name" ] - # Avoid passing GN lists because not all webrtc embedders use //build. - foreach(_output, outputs) { - args += [ - "--output_file", - rebase_path(_output, root_build_dir), - ] - } - foreach(_input, _input_args) { - args += [ "--input_file=$_input" ] - } + # Avoid passing GN lists because not all webrtc embedders use //build. + args += [ + "--output-name", + _name, + ] + } - if (enable_profiling) { - args += [ "--enable_profiling" ] - } - if (enable_jni_tracing) { - args += [ "--enable_tracing" ] + foreach(_input, _input_args) { + args += [ "--input-file=$_input" ] + } + + if (enable_profiling) { + args += [ "--enable_profiling" ] + } } } } @@ -233,7 +278,7 @@ if (enable_java_templates) { # # This target generates the native jni bindings for a set of .java files. # - # See base/android/jni_generator/jni_generator.py for more info about the + # See third_party/jni_zero/jni_generator.py for more info about the # format of generating JNI bindings. # # Variables @@ -252,9 +297,12 @@ if (enable_java_templates) { # ] # } template("generate_jni") { - generate_jni_impl(target_name) { + _generate_jni_impl(target_name) { forward_variables_from(invoker, "*", TESTONLY_AND_VISIBILITY) forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + metadata = { + jni_source_files = sources + } } } @@ -262,7 +310,7 @@ if (enable_java_templates) { # # This target generates the native jni bindings for a set of classes in a .jar. # - # See base/android/jni_generator/jni_generator.py for more info about the + # See third_party/jni_zero/jni_generator.py for more info about the # format of generating JNI bindings. # # Variables @@ -270,8 +318,6 @@ if (enable_java_templates) { # include the full path to the .class file. # jar_file: the path to the .jar. If not provided, will default to the sdk's # android.jar - # always_mangle: Mangle all generated method names. By default, the script - # only mangles methods that cause ambiguity due to method overload. # unchecked_exceptions: Don't CHECK() for exceptions in generated stubs. # This behaves as if every method had @CalledByNativeUnchecked. # deps, public_deps: As normal @@ -286,117 +332,15 @@ if (enable_java_templates) { # ] # } template("generate_jar_jni") { - generate_jni_impl(target_name) { + _generate_jni_impl(target_name) { forward_variables_from(invoker, "*", TESTONLY_AND_VISIBILITY) forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) } } +} # enable_java_templates - # Declare a jni registration target. - # - # This target generates a srcjar containing a copy of GEN_JNI.java, which has - # the native methods of all dependent java files. It can also create a .h file - # for use with manual JNI registration. - # - # The script does not scan any generated sources (those within .srcjars, or - # within root_build_dir). This could be fixed by adding deps & logic to scan - # .srcjars, but isn't currently needed. - # - # See base/android/jni_generator/jni_registration_generator.py for more info - # about the format of the header file. - # - # Variables - # targets: List of .build_config.json supported targets to provide java sources. - # header_output: Path to the generated .h file (optional). - # sources_exclusions: List of .java files that should be skipped. (optional) - # namespace: Registration functions will be wrapped into this. (optional) - # require_native_mocks: Enforce that any native calls using - # org.chromium.base.annotations.NativeMethods must have a mock set - # (optional). - # enable_native_mocks: Allow native calls using - # org.chromium.base.annotations.NativeMethods to be mocked in tests - # (optional). - # no_transitive_deps: Generate registration for only the Java source in the - # specified target(s). This is useful for generating registration for - # feature modules, without including base module dependencies. - # - # Example - # generate_jni_registration("chrome_jni_registration") { - # targets = [ ":chrome_public_apk" ] - # header_output = "$target_gen_dir/$target_name.h" - # sources_exclusions = [ - # "//path/to/Exception.java", - # ] - # } - template("generate_jni_registration") { - action_with_pydeps(target_name) { - forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) - - script = "//base/android/jni_generator/jni_registration_generator.py" - inputs = [] - deps = [] - _srcjar_output = "$target_gen_dir/$target_name.srcjar" - outputs = [ _srcjar_output ] - depfile = "$target_gen_dir/$target_name.d" - - args = [ - "--srcjar-path", - rebase_path(_srcjar_output, root_build_dir), - "--depfile", - rebase_path(depfile, root_build_dir), - ] - foreach(_target, invoker.targets) { - deps += [ "${_target}$build_config_target_suffix($default_toolchain)" ] - _build_config = - get_label_info("${_target}($default_toolchain)", "target_gen_dir") + - "/" + get_label_info("${_target}($default_toolchain)", "name") + - ".build_config.json" - _rebased_build_config = rebase_path(_build_config, root_build_dir) - inputs += [ _build_config ] - - if (defined(invoker.no_transitive_deps) && invoker.no_transitive_deps) { - args += [ "--sources-files=@FileArg($_rebased_build_config:deps_info:java_sources_file)" ] - } else { - args += [ - # This is a list of .sources files. - "--sources-files=@FileArg($_rebased_build_config:deps_info:jni:all_source)", - ] - } - } - - if (use_hashed_jni_names) { - args += [ "--use_proxy_hash" ] - } - - if (defined(invoker.enable_native_mocks) && invoker.enable_native_mocks) { - args += [ "--enable_proxy_mocks" ] - - if (defined(invoker.require_native_mocks) && - invoker.require_native_mocks) { - args += [ "--require_mocks" ] - } - } - - if (defined(invoker.header_output)) { - outputs += [ invoker.header_output ] - args += [ - "--header-path", - rebase_path(invoker.header_output, root_build_dir), - ] - } - - if (defined(invoker.sources_exclusions)) { - _rebase_sources_exclusions = - rebase_path(invoker.sources_exclusions, root_build_dir) - args += [ "--sources-exclusions=$_rebase_sources_exclusions" ] - } - - if (defined(invoker.namespace)) { - args += [ "--namespace=${invoker.namespace}" ] - } - } - } - +# non-robolectric things +if (enable_java_templates && is_android) { # Declare a target for c-preprocessor-generated java files # # NOTE: For generating Java conterparts to enums prefer using the java_cpp_enum @@ -595,8 +539,8 @@ if (enable_java_templates) { # foo_features.cc: # # // A feature. - # const base::Feature kSomeFeature{"SomeFeature", - # base::FEATURE_DISABLED_BY_DEFAULT}; + # BASE_FEATURE(kSomeFeature, "SomeFeature", + # base::FEATURE_DISABLED_BY_DEFAULT); # # FooFeatures.java.tmpl # @@ -619,7 +563,11 @@ if (enable_java_templates) { # my.java.package. template("java_cpp_features") { action_with_pydeps(target_name) { - forward_variables_from(invoker, TESTONLY_AND_VISIBILITY + [ "sources" ]) + forward_variables_from(invoker, + TESTONLY_AND_VISIBILITY + [ + "deps", + "sources", + ]) # The sources aren't compiled so don't check their dependencies. check_includes = false @@ -697,8 +645,6 @@ if (enable_java_templates) { # version_number: (Optional) String of expected version of 'main' native # library. # enable_chromium_linker: (Optional) Whether to use the Chromium linker. - # load_library_from_apk: (Optional) Whether libraries should be loaded from - # the APK without uncompressing. # use_final_fields: True to use final fields. When false, all other # variables must not be set. template("write_native_libraries_java") { @@ -709,6 +655,8 @@ if (enable_java_templates) { _cpu_family = "CPU_FAMILY_X86" } else if (current_cpu == "mipsel" || current_cpu == "mips64el") { _cpu_family = "CPU_FAMILY_MIPS" + } else if (current_cpu == "riscv64") { + _cpu_family = "CPU_FAMILY_RISCV" } else { assert(false, "Unsupported CPU family") } @@ -726,14 +674,16 @@ if (enable_java_templates) { if (invoker.use_final_fields) { # Write native_libraries_list_file via depfile rather than specifyin it # as a dep in order allow R8 to run in parallel with native compilation. - depfile = "$target_gen_dir/$target_name.d" - args += [ - "--final", - "--depfile", - rebase_path(depfile, root_build_dir), - "--native-libraries-list", - rebase_path(invoker.native_libraries_list_file, root_build_dir), - ] + args += [ "--final" ] + if (defined(invoker.native_libraries_list_file)) { + depfile = "$target_gen_dir/$target_name.d" + args += [ + "--native-libraries-list", + rebase_path(invoker.native_libraries_list_file, root_build_dir), + "--depfile", + rebase_path(depfile, root_build_dir), + ] + } if (defined(invoker.main_component_library)) { args += [ "--main-component-library", @@ -744,13 +694,6 @@ if (enable_java_templates) { invoker.enable_chromium_linker) { args += [ "--enable-chromium-linker" ] } - if (defined(invoker.load_library_from_apk) && - invoker.load_library_from_apk) { - args += [ "--load-library-from-apk" ] - } - if (defined(invoker.use_modern_linker) && invoker.use_modern_linker) { - args += [ "--use-modern-linker" ] - } } } } @@ -1016,9 +959,9 @@ if (enable_java_templates) { } if (defined(invoker.alternative_android_sdk_dep)) { - _deps += [ invoker.alternative_android_sdk_dep ] + _android_sdk_dep = invoker.alternative_android_sdk_dep } else { - _deps += [ "//third_party/android_sdk:android_sdk_java" ] + _android_sdk_dep = default_android_sdk_dep } _resource_files = [] @@ -1057,7 +1000,7 @@ if (enable_java_templates) { ]) r_text = _r_text_out_path - possible_config_deps = _deps + possible_config_deps = _deps + [ _android_sdk_dep ] # Always merge manifests from resources. # * Might want to change this at some point for consistency and clarity, @@ -1070,11 +1013,30 @@ if (enable_java_templates) { prepare_resources(target_name) { forward_variables_from(invoker, [ - "strip_drawables", "allow_missing_resources", + "public_deps", + "strip_drawables", "visibility", ]) - deps = _deps + _lib_deps = filter_exclude(filter_include(_deps, java_library_patterns), + java_resource_patterns) + if (defined(public_deps)) { + # Since java library targets depend directly on sub-targets rather than + # top-level targets, public_deps are not properly propagated, at least + # in terms of the "did you depend on the target that generates your + # inputs" GN check. + assert(filter_include(public_deps, java_target_patterns) == [], + "Java targets should use deps, not public_deps. " + + "target=${target_name}, public_deps=${public_deps}") + } + + # Depend on non-library deps and on __assetres subtargets of library deps. + deps = filter_exclude(_deps, _lib_deps) + [ _android_sdk_dep ] + foreach(_lib_dep, _lib_deps) { + # Expand //foo/java -> //foo/java:java + _lib_dep = get_label_info(_lib_dep, "label_no_toolchain") + deps += [ "${_lib_dep}__assetres" ] + } res_sources_path = _res_sources_path sources = _resource_files @@ -1133,6 +1095,14 @@ if (enable_java_templates) { _build_config = "$target_gen_dir/$target_name.build_config.json" _build_config_target_name = "$target_name$build_config_target_suffix" + _sources = [] + if (defined(invoker.sources)) { + _sources = invoker.sources + } + _renaming_sources = [] + if (defined(invoker.renaming_sources)) { + _renaming_sources = invoker.renaming_sources + } write_build_config(_build_config_target_name) { type = "android_assets" build_config = _build_config @@ -1147,13 +1117,13 @@ if (enable_java_templates) { possible_config_deps = invoker.deps } - if (defined(invoker.sources)) { - asset_sources = invoker.sources + if (_sources != []) { + asset_sources = _sources } - if (defined(invoker.renaming_sources)) { + if (_renaming_sources != []) { assert(defined(invoker.renaming_destinations)) _source_count = 0 - foreach(_, invoker.renaming_sources) { + foreach(_, _renaming_sources) { _source_count += 1 } _dest_count = 0 @@ -1163,14 +1133,36 @@ if (enable_java_templates) { assert( _source_count == _dest_count, "android_assets() renaming_sources.length != renaming_destinations.length") - asset_renaming_sources = invoker.renaming_sources + asset_renaming_sources = _renaming_sources asset_renaming_destinations = invoker.renaming_destinations } } - group(target_name) { - forward_variables_from(invoker, [ "deps" ]) - public_deps = [ ":$_build_config_target_name" ] + # Use an action in order to mark sources as "inputs" to a GN target so that + # GN will fail if the appropriate deps do not exist, and so that "gn refs" + # will know about the sources. We do not add these inputs & deps to the + # __build_config target because we want building .build_config.json files + # to be fast (and because write_build_config.py does not need the files to + # exist). + _all_sources = _sources + _renaming_sources + if (_all_sources != []) { + action(target_name) { + forward_variables_from(invoker, [ "deps" ]) + public_deps = [ ":$_build_config_target_name" ] + + script = "//build/android/gyp/validate_inputs.py" + inputs = _all_sources + outputs = [ "$target_gen_dir/$target_name.stamp" ] + args = [ + "--stamp", + rebase_path(outputs[0], root_build_dir), + ] + rebase_path(_all_sources, root_build_dir) + } + } else { + group(target_name) { + forward_variables_from(invoker, [ "deps" ]) + public_deps = [ ":$_build_config_target_name" ] + } } } @@ -1186,8 +1178,10 @@ if (enable_java_templates) { forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) _build_config_vars = [ "input_jars_paths", + "preferred_dep", "mergeable_android_manifests", "proguard_configs", + "requires_android", ] _invoker_deps = [] if (defined(invoker.deps)) { @@ -1203,17 +1197,34 @@ if (enable_java_templates) { supports_android = true possible_config_deps = _invoker_deps } + + _assetres_deps = filter_include(_invoker_deps, java_resource_patterns) + _invoker_deps_minus_assetres = filter_exclude(_invoker_deps, _assetres_deps) + _lib_deps = + filter_include(_invoker_deps_minus_assetres, java_library_patterns) + + _expanded_lib_deps = [] + foreach(_lib_dep, _lib_deps) { + _expanded_lib_deps += [ get_label_info(_lib_dep, "label_no_toolchain") ] + } foreach(_group_name, [ - "header", - "impl", "assetres", + "header", + "host", + "validate", ]) { - java_lib_group("${target_name}__${_group_name}") { - deps = _invoker_deps - group_name = _group_name + group("${target_name}__$_group_name") { + deps = [] + foreach(_lib_dep, _expanded_lib_deps) { + deps += [ "${_lib_dep}__${_group_name}" ] + } + if (_group_name == "assetres") { + deps += _assetres_deps + } } } + group(target_name) { forward_variables_from(invoker, "*", @@ -1254,10 +1265,6 @@ if (enable_java_templates) { forward_variables_from(invoker, "*", TESTONLY_AND_VISIBILITY) forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) type = "java_binary" - if (!defined(data_deps)) { - data_deps = [] - } - data_deps += [ "//third_party/jdk:java_data" ] } } @@ -1293,90 +1300,165 @@ if (enable_java_templates) { } } - # Declare a Junit executable target + # Declare a Robolectric host side test binary. # - # This target creates an executable from java code for running as a junit test - # suite. The executable will be in the output folder's /bin/ directory. + # This target creates an executable from java code for running as a + # Robolectric test suite. The executable will be in the output folder's /bin/ + # directory. # # Supports all variables of java_binary(). # # Example - # junit_binary("foo") { + # robolectric_binary("foo") { # sources = [ "org/chromium/foo/FooTest.java" ] # deps = [ ":bar_java" ] # } - template("junit_binary") { + template("robolectric_binary") { testonly = true - _java_binary_target_name = "${target_name}__java_binary" - _test_runner_target_name = "${target_name}__test_runner_script" _main_class = "org.chromium.testing.local.JunitTestMain" - _build_config = "$target_gen_dir/$target_name.build_config.json" _build_config_target_name = "$target_name$build_config_target_suffix" - _deps = [ + _java_binary_target_name = "${target_name}__java_binary" + + _invoker_deps = [ "//testing/android/junit:junit_test_support", "//third_party/android_deps:robolectric_all_java", "//third_party/junit", - "//third_party/mockito:mockito_java", + "//third_party/mockito:mockito_jvm_java", ] if (defined(invoker.deps)) { - _deps += invoker.deps - } - if (defined(invoker.alternative_android_sdk_dep)) { - _android_sdk_dep = invoker.alternative_android_sdk_dep - } else { - _android_sdk_dep = "//third_party/android_sdk:android_sdk_java" + _invoker_deps += invoker.deps } + _non_java_deps = filter_exclude(_invoker_deps, java_target_patterns) + _java_assetres_deps = [ ":${_java_binary_target_name}__assetres" ] - # a package name or a manifest is required to have resources. This is + # A package name or a manifest is required to have resources. This is # added so that junit tests that do not care about the package name can # still use resources without having to explicitly set one. if (defined(invoker.package_name)) { _package_name = invoker.package_name } else if (!defined(invoker.android_manifest)) { - _package_name = "org.chromium.test" + _package_name = "no.manifest.configured" } - _resource_arsc_output = "${target_gen_dir}/${target_name}.ap_" - _compile_resources_target = "${target_name}__compile_resources" - compile_resources(_compile_resources_target) { - forward_variables_from(invoker, [ "android_manifest" ]) - deps = _deps - android_sdk_dep = _android_sdk_dep + _merge_manifest_target_name = "${target_name}__merge_manifests" + _android_manifest = + "$target_gen_dir/$target_name.AndroidManifest.merged.xml" + + merge_manifests(_merge_manifest_target_name) { + if (defined(invoker.android_manifest)) { + input_manifest = invoker.android_manifest + } else { + input_manifest = "//build/android/AndroidManifest.xml" + } + + if (defined(_package_name)) { + manifest_package = _package_name + } + output_manifest = _android_manifest + build_config = _build_config + min_sdk_version = default_min_sdk_version + target_sdk_version = android_sdk_version + deps = _non_java_deps + _java_assetres_deps + + [ ":$_build_config_target_name" ] + if (defined(invoker.android_manifest_dep)) { + deps += [ invoker.android_manifest_dep ] + } + } + + _resource_arsc_output = "${target_out_dir}/${target_name}.ap_" + _compile_resources_target_name = "${target_name}__compile_resources" + compile_resources(_compile_resources_target_name) { + deps = _non_java_deps + _java_assetres_deps + + [ ":$_merge_manifest_target_name" ] build_config_dep = ":$_build_config_target_name" build_config = _build_config if (defined(_package_name)) { rename_manifest_package = _package_name } - if (!defined(android_manifest)) { - android_manifest = "//build/android/AndroidManifest.xml" - } + android_manifest = _android_manifest arsc_output = _resource_arsc_output min_sdk_version = default_min_sdk_version target_sdk_version = android_sdk_version } - _jni_srcjar_target = "${target_name}__final_jni" - _outer_target_name = target_name - generate_jni_registration(_jni_srcjar_target) { - enable_native_mocks = true - require_native_mocks = true - targets = [ ":$_outer_target_name" ] + # apkbuilder step needed only to add android assets to the .ap_ file. + _apkbuilder_output = "${target_out_dir}/${target_name}.robo.ap_" + _apkbuilder_target_name = "${target_name}__apkbuilder" + package_apk("$_apkbuilder_target_name") { + build_config = _build_config + min_sdk_version = default_min_sdk_version + deps = _java_assetres_deps + [ + ":$_build_config_target_name", + ":$_compile_resources_target_name", + ] + + is_robolectric_apk = true + packaged_resources_path = _resource_arsc_output + output_apk_path = _apkbuilder_output + } + + # Some may want to disable this to remove dependency on //base + # (JNI generator is in //base). + _generate_final_jni = + !defined(invoker.generate_final_jni) || invoker.generate_final_jni + if (_generate_final_jni) { + _jni_srcjar_deps = [] + if (defined(invoker.shared_libraries)) { + foreach(_dep, invoker.shared_libraries) { + _dep_no_toolchain = get_label_info(_dep, "label_no_toolchain") + _dep_toolchain = get_label_info(_dep, "toolchain") + assert( + _dep_toolchain == robolectric_toolchain, + "$target_name has shared_libraries with incorrect toolchain. " + + "Should contain (\$robolectric_toolchain) suffix: $_dep") + _jni_srcjar_deps += + [ "${_dep_no_toolchain}__jni_registration($default_toolchain)" ] + } + + # Write shared library output files of all dependencies to a file. Those + # will be the shared libraries packaged into the APK. + _shared_library_list_file = "$target_gen_dir/$target_name.native_libs" + generated_file("${target_name}__shared_library_list") { + deps = invoker.shared_libraries + outputs = [ _shared_library_list_file ] + data_keys = [ "shared_libraries" ] + walk_keys = [ "shared_libraries_barrier" ] + rebase = root_build_dir + } + } else { + _jni_srcjar_target_name = "${target_name}__final_jni" + generate_jni_registration(_jni_srcjar_target_name) { + enable_native_mocks = true + require_native_mocks = true + java_targets = [ ":$_java_binary_target_name" ] + add_stubs_for_missing_jni = true + } + _jni_srcjar_deps = [ ":$_jni_srcjar_target_name" ] + } + _native_libraries_target_name = "${target_name}__native_libraries" + write_native_libraries_java(_native_libraries_target_name) { + enable_chromium_linker = false + use_final_fields = true + if (defined(_shared_library_list_file)) { + native_libraries_list_file = _shared_library_list_file + } + } } java_library_impl(_java_binary_target_name) { - forward_variables_from(invoker, "*", TESTONLY_AND_VISIBILITY + [ "deps" ]) - type = "junit_binary" + forward_variables_from(invoker, + "*", + TESTONLY_AND_VISIBILITY + [ + "deps", + "extra_args", + "shared_libraries", + ]) + type = "robolectric_binary" main_target_name = invoker.target_name - # Include the android SDK jar(s) for resource processing. - include_android_sdk = true - - # Robolectric can handle deps that set !supports_android as well those - # that set requires_android. - bypass_platform_checks = true - deps = _deps + deps = _invoker_deps testonly = true main_class = _main_class wrapper_script_name = "helper/$main_target_name" @@ -1386,37 +1468,54 @@ if (enable_java_templates) { # 66%, which makes sharding more effective. tiered_stop_at_level_one = true + is_robolectric = true + include_android_sdk = true + alternative_android_sdk_dep = + "//third_party/robolectric:robolectric_test_sdk_java" + if (!defined(srcjar_deps)) { srcjar_deps = [] } srcjar_deps += [ - ":$_compile_resources_target", - ":$_jni_srcjar_target", - - # This dep is required for any targets that depend on //base:base_java. - "//build/android:build_config_gen", + ":$_compile_resources_target_name", + "//build/android:build_config_for_testing_gen", ] + if (_generate_final_jni) { + srcjar_deps += [ ":$_native_libraries_target_name" ] + _jni_srcjar_deps + } } - test_runner_script(_test_runner_target_name) { - test_name = invoker.target_name - test_suite = invoker.target_name - test_type = "junit" - ignore_all_data_deps = true - resource_apk = _resource_arsc_output - } - - group(target_name) { + test_runner_script(target_name) { forward_variables_from(invoker, [ "assert_no_deps", + "extra_args", "visibility", ]) - public_deps = [ + test_name = invoker.target_name + test_suite = invoker.target_name + test_type = "junit" + ignore_all_data_deps = true + resource_apk = _apkbuilder_output + deps = [ + ":$_apkbuilder_target_name", ":$_build_config_target_name", - ":$_java_binary_target_name", - ":$_test_runner_target_name", + ":${_java_binary_target_name}__host", + ":${_java_binary_target_name}__java_binary_script", + ":${_java_binary_target_name}__validate", + "//third_party/robolectric:robolectric_runtime_jars", ] + if (defined(invoker.shared_libraries)) { + data_deps = invoker.shared_libraries + } + + # Add non-libary deps, since the __host target does not depend on them. + deps += filter_exclude(_invoker_deps, java_library_patterns) + + metadata = { + # Allows metadata collection via apk targets that traverse only java deps. + java_walk_keys = [ ":${_java_binary_target_name}__host" ] + } } } @@ -1530,8 +1629,6 @@ if (enable_java_templates) { # # Variables: # output: Path to the output jar. - # override_build_config: Use a pre-existing .build_config. Must be of type - # "apk". # use_interface_jars: Use all dependent interface .jars rather than # implementation .jars. # use_unprocessed_jars: Use unprocessed / undesugared .jars. @@ -1548,8 +1645,6 @@ if (enable_java_templates) { # TODO(crbug.com/1042017): Remove. not_needed(invoker, [ "no_build_hooks" ]) forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) - _supports_android = - !defined(invoker.supports_android) || invoker.supports_android _use_interface_jars = defined(invoker.use_interface_jars) && invoker.use_interface_jars _use_unprocessed_jars = @@ -1561,30 +1656,23 @@ if (enable_java_templates) { _jar_target_name = target_name - _deps = [] - if (defined(invoker.deps)) { - _deps = invoker.deps - } - if (_supports_android) { - _deps += [ "//third_party/android_sdk:android_sdk_java" ] - } - - if (defined(invoker.override_build_config)) { - _build_config = invoker.override_build_config + if (defined(invoker.build_config)) { + _build_config = invoker.build_config + _build_config_dep = invoker.build_config_dep } else { _build_config = "$target_gen_dir/$target_name.build_config.json" _build_config_target_name = "$target_name$build_config_target_suffix" + _build_config_dep = ":$_build_config_target_name" write_build_config(_build_config_target_name) { type = "dist_jar" - supports_android = _supports_android + supports_android = + !defined(invoker.supports_android) || invoker.supports_android requires_android = defined(invoker.requires_android) && invoker.requires_android - possible_config_deps = _deps + possible_config_deps = invoker.deps build_config = _build_config } - - _deps += [ ":$_build_config_target_name" ] } _rebased_build_config = rebase_path(_build_config, root_build_dir) @@ -1592,7 +1680,22 @@ if (enable_java_templates) { forward_variables_from(invoker, [ "data" ]) script = "//build/android/gyp/zip.py" depfile = "$target_gen_dir/$target_name.d" - deps = _deps + deps = [ _build_config_dep ] + + if (_use_interface_jars) { + _lib_deps = + filter_exclude(filter_include(invoker.deps, java_library_patterns), + java_resource_patterns) + _other_deps = filter_exclude(invoker.deps, _lib_deps) + foreach(_lib_dep, _lib_deps) { + # Expand //foo/java -> //foo/java:java + _lib_dep = get_label_info(_lib_dep, "label_no_toolchain") + deps += [ "${_lib_dep}__header" ] + } + deps += _other_deps + } else { + deps += invoker.deps + } inputs = [ _build_config ] @@ -1627,6 +1730,7 @@ if (enable_java_templates) { args += [ "--input-zips=@FileArg($_rebased_build_config:deps_info:device_classpath)" ] } } + _excludes = [] if (defined(invoker.jar_excluded_patterns)) { _excludes += invoker.jar_excluded_patterns @@ -1635,6 +1739,9 @@ if (enable_java_templates) { # Turbine adds files like: META-INF/TRANSITIVE/.../Foo.class # These confuse proguard: https://crbug.com/1081443 _excludes += [ "META-INF/*" ] + } else { + # Manifest files will never be correct when merging jars. + _excludes += [ "META-INF/*.MF" ] } if (_excludes != []) { args += [ "--input-zips-excluded-globs=$_excludes" ] @@ -1649,6 +1756,8 @@ if (enable_java_templates) { # proguard_enabled: Whether to enable R8. # proguard_configs: List of proguard configs. # proguard_enable_obfuscation: Whether to enable obfuscation (default=true). + # package_name: Used in the Proguard map ID. + # version_code: Used in the Proguard map ID. # # Example # dist_dex("lib_fatjar") { @@ -1656,7 +1765,7 @@ if (enable_java_templates) { # output = "$root_build_dir/MyLibrary.jar" # } template("dist_dex") { - _deps = [ "//third_party/android_sdk:android_sdk_java" ] + _deps = [ default_android_sdk_dep ] if (defined(invoker.deps)) { _deps += invoker.deps } @@ -1677,19 +1786,20 @@ if (enable_java_templates) { build_config = _build_config } - _deps += [ ":$_build_config_target_name" ] - dex(target_name) { forward_variables_from(invoker, TESTONLY_AND_VISIBILITY + [ "data", "data_deps", + "package_name", "proguard_configs", "proguard_enabled", "proguard_enable_obfuscation", "min_sdk_version", + "repackage_classes", + "version_code", ]) - deps = _deps + deps = [ ":$_build_config_target_name" ] + _deps build_config = _build_config enable_multidex = false output = invoker.output @@ -1699,13 +1809,10 @@ if (enable_java_templates) { # per-target dex steps are emitted here since this is using jar files # rather than dex files. ignore_desugar_missing_deps = true - - # When trying to build a stand-alone .dex, don't add in jdk_libs_dex. - supports_jdk_library_desugaring = false } else { _rebased_build_config = rebase_path(_build_config, root_build_dir) input_dex_filearg = - "@FileArg(${_rebased_build_config}:final_dex:all_dex_files)" + "@FileArg(${_rebased_build_config}:deps_info:all_dex_files)" } } } @@ -1730,9 +1837,9 @@ if (enable_java_templates) { # proguard_configs: List of proguard configs (optional). # 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. + # direct_deps_only: Do not recurse on deps (optional, defaults false). + # jar_excluded_patterns: List of globs for paths to exclude (optional). + # jar_included_patterns: List of globs for paths to include (optional). # # Example # dist_aar("my_aar") { @@ -1742,14 +1849,15 @@ if (enable_java_templates) { template("dist_aar") { forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + _direct_deps_only = + defined(invoker.direct_deps_only) && invoker.direct_deps_only + _deps = [] + if (defined(invoker.deps)) { - _deps = invoker.deps + _deps += invoker.deps } - _direct_deps_only = - defined(invoker.direct_deps_only) && invoker.direct_deps_only - _build_config = "$target_gen_dir/$target_name.build_config.json" _build_config_target_name = "$target_name$build_config_target_suffix" @@ -1767,7 +1875,11 @@ if (enable_java_templates) { _rebased_build_config = rebase_path(_build_config, root_build_dir) action_with_pydeps(target_name) { - forward_variables_from(invoker, [ "data" ]) + forward_variables_from(invoker, + [ + "data", + "assert_no_deps", + ]) depfile = "$target_gen_dir/$target_name.d" deps = _deps script = "//build/android/gyp/dist_aar.py" @@ -1795,8 +1907,11 @@ if (enable_java_templates) { if (_direct_deps_only) { args += [ "--jars=@FileArg($_rebased_build_config:javac:classpath)" ] } else { - args += [ "--jars=@FileArg($_rebased_build_config:deps_info:javac_full_classpath)" ] + args += [ + "--jars=@FileArg($_rebased_build_config:deps_info:device_classpath)", + ] } + if (defined(invoker.android_manifest)) { args += [ "--android-manifest", @@ -1835,14 +1950,8 @@ if (enable_java_templates) { # Supports all variables of java_library(), plus: # deps: In addition to defining java deps, this can also include # android_assets() and android_resources() targets. - # alternative_android_sdk_ijar: if set, the given android_sdk_ijar file - # replaces the default android_sdk_ijar. - # alternative_android_sdk_ijar_dep: the target that generates - # alternative_android_sdk_ijar, must be set if alternative_android_sdk_ijar - # is used. - # alternative_android_sdk_jar: actual jar corresponding to - # alternative_android_sdk_ijar, must be set if alternative_android_sdk_ijar - # is used. + # alternative_android_sdk_dep: android_system_java_prebuilt target to use + # in place of the default android.jar. # # Example # android_library("foo_java") { @@ -1877,11 +1986,67 @@ if (enable_java_templates) { "*/R\$*.class", "*/Manifest.class", "*/Manifest\$*.class", - "*/GEN_JNI.class", + "*/*GEN_JNI.class", ] } } + # Declare an Android robolectric library target + # + # This target creates an Android library containing java code and Android + # resources. + # + # Supports all variables of java_library(), plus: + # deps: In addition to defining java deps, this can also include + # android_assets() and android_resources() targets. + # + # Example + # robolectric_library("foo_junit") { + # sources = [ + # "android/org/chromium/foo/FooTest.java", + # "android/org/chromium/foo/FooTestUtils.java", + # "android/org/chromium/foo/FooMock.java", + # ] + # deps = [ + # "//base:base_junit_test_support" + # ] + # srcjar_deps = [ + # ":foo_generated_enum" + # ] + # jar_excluded_patterns = [ + # "*/FooService.class", "org/chromium/FooService\$*.class" + # ] + # } + template("robolectric_library") { + java_library(target_name) { + forward_variables_from(invoker, "*", TESTONLY_AND_VISIBILITY) + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + + testonly = true + + is_robolectric = true + include_android_sdk = true + alternative_android_sdk_dep = + "//third_party/robolectric:robolectric_test_sdk_java" + + if (!defined(jar_excluded_patterns)) { + jar_excluded_patterns = [] + } + jar_excluded_patterns += [ + "*/R.class", + "*/R\$*.class", + "*/Manifest.class", + "*/Manifest\$*.class", + "*/*GEN_JNI.class", + ] + + if (!defined(deps)) { + deps = [] + } + deps += [ "//third_party/android_deps:robolectric_all_java" ] + } + } + # Declare an Android library target for a prebuilt jar # # This target creates an Android library containing java code and Android @@ -1934,8 +2099,9 @@ if (enable_java_templates) { defines = [] # Set these even when !use_final_fields so that they have correct default - # values within junit_binary(), which ignores jar_excluded_patterns. - if (enable_java_asserts) { + # values within robolectric_binary(), which ignores jar_excluded_patterns. + if ((defined(invoker.assertions_implicitly_enabled) && + invoker.assertions_implicitly_enabled) || enable_java_asserts) { defines += [ "_ENABLE_ASSERTS" ] } if (use_cfi_diag || is_ubsan || is_ubsan_security || is_ubsan_vptr) { @@ -1975,6 +2141,15 @@ if (enable_java_templates) { ] } } + + if (defined(testonly) && testonly) { + defines += [ "_IS_FOR_TEST" ] + } + + if (defined(invoker.write_clang_profiling_data) && + invoker.write_clang_profiling_data) { + defines += [ "_WRITE_CLANG_PROFILING_DATA" ] + } } } @@ -1988,14 +2163,12 @@ if (enable_java_templates) { # is_bundle_module: Whether or not this target is part of a bundle build. # java_package: Java package for the generated class. # use_chromium_linker: - # use_modern_linker: template("generate_product_config_srcjar") { java_cpp_template(target_name) { defines = [] _use_final = defined(invoker.build_config) || - defined(invoker.use_chromium_linker) || - defined(invoker.use_modern_linker) || defined(invoker.is_bundle) + defined(invoker.use_chromium_linker) || defined(invoker.is_bundle) if (_use_final) { defines += [ "USE_FINAL" ] } @@ -2005,12 +2178,9 @@ if (enable_java_templates) { _use_chromium_linker = defined(invoker.use_chromium_linker) && invoker.use_chromium_linker - _use_modern_linker = - defined(invoker.use_modern_linker) && invoker.use_modern_linker _is_bundle = defined(invoker.is_bundle_module) && invoker.is_bundle_module defines += [ "USE_CHROMIUM_LINKER_VALUE=$_use_chromium_linker", - "USE_MODERN_LINKER_VALUE=$_use_modern_linker", "IS_BUNDLE_VALUE=$_is_bundle", ] if (defined(invoker.build_config)) { @@ -2037,8 +2207,7 @@ if (enable_java_templates) { # * dependencies of this .so are not automatically included # * ".cr.so" is never added # * they are not side-loaded when incremental_install=true. - # * load_library_from_apk, use_chromium_linker, - # and enable_relocation_packing do not apply + # * use_chromium_linker, and enable_relocation_packing do not apply # Use this instead of shared_libraries when you are going to load the library # conditionally, and only when shared_libraries doesn't work for you. # secondary_abi_loadable_modules: This is the loadable_modules analog to @@ -2056,13 +2225,10 @@ if (enable_java_templates) { # generate_buildconfig_java: If defined and false, skip generating the # BuildConfig java class describing the build configuration. The default # is true when building with Chromium for non-test APKs. - # generate_final_jni: If defined and false, skip generating the - # GEN_JNI srcjar. - # jni_registration_header: If specified, causes the - # ${target_name}__final_jni target to additionally output a - # header file to this path for use with manual JNI registration. - # jni_sources_exclusions: List of source path to exclude from the - # final_jni step. + # generate_native_libraries_java: If defined, whether NativeLibraries.java is + # generated is solely controlled by this flag. Otherwise, the default behavior + # is NativeLibraries.java will only be generated for the base module/apk when + # its `shared_libraries` is not empty. # aapt_locale_allowlist: If set, all locales not in this list will be # stripped from resources.arsc. # resource_exclusion_regex: Causes all drawable images matching the regex to @@ -2082,10 +2248,8 @@ if (enable_java_templates) { # shared_resources_allowlist_target: Optional name of a target specifying # an input R.txt file that lists the resources that can be exported # by the APK when shared_resources or app_as_shared_lib is defined. - # uncompress_shared_libraries: True if shared libraries should be stored - # uncompressed in the APK. Must be unset or true if load_library_from_apk - # is set to true. # uncompress_dex: Store final .dex files uncompressed in the apk. + # omit_dex: If true, do not build or include classes.dex. # strip_resource_names: True if resource names should be stripped from the # resources.arsc file in the apk or module. # strip_unused_resources: True if unused resources should be stripped from @@ -2103,15 +2267,8 @@ if (enable_java_templates) { # dependent resource targets which override another target set # overlay_resources=true. This check is on for non-test targets and # cannot be disabled. - # static_library_dependent_targets: A list of scopes describing targets that - # use this target as a static library. Common Java code from the targets - # listed in static_library_dependent_targets will be moved into this - # target. Scope members are name and is_resource_ids_provider. # static_library_provider: Specifies a single target that this target will # use as a static library APK. - # static_library_synchronized_proguard: When proguard is enabled, the - # static_library_provider target will provide the dex file(s) for this - # target. # min_sdk_version: The minimum Android SDK version this target supports. # Optional, default $default_min_sdk_version. # target_sdk_version: The target Android SDK version for this target. @@ -2121,9 +2278,6 @@ if (enable_java_templates) { # require_native_mocks: Enforce that any native calls using # org.chromium.base.annotations.NativeMethods must have a mock set # (optional). - # enable_native_mocks: Allow native calls using - # org.chromium.base.annotations.NativeMethods to be mocked in tests - # (optional). # product_config_java_packages: Optional list of java packages. If given, a # ProductConfig.java file will be generated for each package. # enable_proguard_checks: Turns on -checkdiscard directives and missing @@ -2147,10 +2301,11 @@ if (enable_java_templates) { # with this file as the base. template("android_apk_or_module") { forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) - assert(defined(invoker.android_manifest)) + _template_name = target_name _base_path = "$target_out_dir/$target_name/$target_name" _build_config = "$target_gen_dir/$target_name.build_config.json" _build_config_target = "$target_name$build_config_target_suffix" + _java_target_name = "${_template_name}__java" _min_sdk_version = default_min_sdk_version _target_sdk_version = android_sdk_version @@ -2161,8 +2316,6 @@ if (enable_java_templates) { _target_sdk_version = invoker.target_sdk_version } - _template_name = target_name - _is_bundle_module = defined(invoker.is_bundle_module) && invoker.is_bundle_module if (_is_bundle_module) { @@ -2170,6 +2323,7 @@ if (enable_java_templates) { defined(invoker.is_base_module) && invoker.is_base_module } + _omit_dex = defined(invoker.omit_dex) && invoker.omit_dex _enable_multidex = !defined(invoker.enable_multidex) || invoker.enable_multidex @@ -2222,45 +2376,23 @@ if (enable_java_templates) { _version_name = android_override_version_name } - _deps = [] if (defined(invoker.deps)) { - _deps = invoker.deps + _invoker_deps = invoker.deps + } else { + _invoker_deps = [] } + _non_java_deps = filter_exclude(_invoker_deps, java_target_patterns) + _java_assetres_deps = [ ":${_java_target_name}__assetres" ] _srcjar_deps = [] if (defined(invoker.srcjar_deps)) { _srcjar_deps = invoker.srcjar_deps } - _android_root_manifest_deps = [] - if (defined(invoker.android_manifest_dep)) { - _android_root_manifest_deps = [ invoker.android_manifest_dep ] - } - _android_root_manifest = invoker.android_manifest - _use_chromium_linker = defined(invoker.use_chromium_linker) && invoker.use_chromium_linker - _use_modern_linker = - defined(invoker.use_modern_linker) && invoker.use_modern_linker - - _load_library_from_apk = - defined(invoker.load_library_from_apk) && invoker.load_library_from_apk - - not_needed([ - "_use_chromium_linker", - "_use_modern_linker", - ]) - assert(!_load_library_from_apk || _use_chromium_linker, - "load_library_from_apk requires use_chromium_linker") - - # Make sure that uncompress_shared_libraries is set to true if - # load_library_from_apk is true. - if (defined(invoker.uncompress_shared_libraries)) { - _uncompress_shared_libraries = invoker.uncompress_shared_libraries - assert(!_load_library_from_apk || _uncompress_shared_libraries) - } else { - _uncompress_shared_libraries = _load_library_from_apk - } + + not_needed([ "_use_chromium_linker" ]) # The dependency that makes the chromium linker, if any is needed. _native_libs_deps = [] @@ -2313,18 +2445,8 @@ if (enable_java_templates) { _rebased_build_config = rebase_path(_build_config, root_build_dir) assert(_rebased_build_config != "") # Mark as used. - _generate_buildconfig_java = !defined(invoker.apk_under_test) - if (defined(invoker.generate_buildconfig_java)) { - _generate_buildconfig_java = invoker.generate_buildconfig_java - } - - _generate_productconfig_java = defined(invoker.product_config_java_packages) - - # JNI generation usually goes hand-in-hand with buildconfig generation. - _generate_final_jni = _generate_buildconfig_java - if (defined(invoker.generate_final_jni)) { - _generate_final_jni = invoker.generate_final_jni - } + _generate_productconfig_java = + defined(invoker.product_config_java_packages) && !_omit_dex _proguard_enabled = defined(invoker.proguard_enabled) && invoker.proguard_enabled @@ -2333,44 +2455,16 @@ if (enable_java_templates) { _proguard_mapping_path = "$_final_apk_path.mapping" } - # TODO(http://crbug.com/901465): Move shared Java code to static libraries - # when !_proguard_enabled too. - _is_static_library_provider = - defined(invoker.static_library_dependent_targets) && _proguard_enabled - if (_is_static_library_provider) { - _static_library_sync_dex_path = "$_base_path.synchronized.r8dex.jar" - _resource_ids_provider_deps = [] - foreach(_target, invoker.static_library_dependent_targets) { - if (_target.is_resource_ids_provider) { - assert(_resource_ids_provider_deps == [], - "Can only have 1 resource_ids_provider_dep") - _resource_ids_provider_deps += [ _target.name ] - } - } - _resource_ids_provider_dep = _resource_ids_provider_deps[0] - } else if (defined(invoker.resource_ids_provider_dep)) { + if (defined(invoker.resource_ids_provider_dep)) { _resource_ids_provider_dep = invoker.resource_ids_provider_dep } - if (_is_static_library_provider) { - _shared_resources_allowlist_target = _resource_ids_provider_dep - } else if (defined(invoker.shared_resources_allowlist_target)) { + if (defined(invoker.shared_resources_allowlist_target)) { _shared_resources_allowlist_target = invoker.shared_resources_allowlist_target } _uses_static_library = defined(invoker.static_library_provider) - _uses_static_library_synchronized_proguard = - defined(invoker.static_library_synchronized_proguard) && - invoker.static_library_synchronized_proguard - - if (_uses_static_library_synchronized_proguard) { - assert(_uses_static_library) - - # These will be provided by the static library APK. - _generate_buildconfig_java = false - _generate_final_jni = false - } # TODO(crbug.com/864142): Allow incremental installs of bundle modules. _incremental_apk = !_is_bundle_module && @@ -2382,18 +2476,18 @@ if (enable_java_templates) { _incremental_apk_path = "${_final_apk_path_no_ext}_incremental.apk" } - if (!_incremental_apk) { + if (!_incremental_apk && !_omit_dex) { # Bundle modules don't build the dex here, but need to write this path - # to their .build_config.json file. + # to their .build_config.json file only when proguarding. if (_proguard_enabled) { _final_dex_path = "$_base_path.r8dex.jar" - } else { + } else if (!_is_bundle_module) { _final_dex_path = "$_base_path.mergeddex.jar" } } _android_manifest = - "$target_gen_dir/${_template_name}_manifest/AndroidManifest.xml" + "$target_gen_dir/${_template_name}/AndroidManifest.merged.xml" _merge_manifest_target = "${_template_name}__merge_manifests" merge_manifests(_merge_manifest_target) { forward_variables_from(invoker, @@ -2401,15 +2495,21 @@ if (enable_java_templates) { "manifest_package", "max_sdk_version", ]) - input_manifest = _android_root_manifest + input_manifest = invoker.android_manifest output_manifest = _android_manifest build_config = _build_config min_sdk_version = _min_sdk_version target_sdk_version = _target_sdk_version - deps = _android_root_manifest_deps + [ ":$_build_config_target" ] + + # Depend on android_resources() targets that use generated files + # in mergeable_android_manifests (such as android_aar_prebuilt). + deps = _java_assetres_deps + [ ":$_build_config_target" ] + if (defined(invoker.android_manifest_dep)) { + deps += [ invoker.android_manifest_dep ] + } } - _final_deps = [] + _final_deps = [ ":$_java_target_name" ] _enable_main_dex_list = _enable_multidex && _min_sdk_version < 21 if (_enable_main_dex_list) { @@ -2418,18 +2518,6 @@ if (enable_java_templates) { } _generated_proguard_config = "$_base_path.resources.proguard.txt" - if (_generate_buildconfig_java && - defined(invoker.product_version_resources_dep)) { - # Needs to be added as a .build_config.json dep to pick up resources. - _deps += [ invoker.product_version_resources_dep ] - } - - if (defined(invoker.alternative_android_sdk_dep)) { - _android_sdk_dep = invoker.alternative_android_sdk_dep - } else { - _android_sdk_dep = "//third_party/android_sdk:android_sdk_java" - } - if (defined(_shared_resources_allowlist_target)) { _allowlist_gen_dir = get_label_info(_shared_resources_allowlist_target, "target_gen_dir") @@ -2442,35 +2530,55 @@ if (enable_java_templates) { "${_shared_resources_allowlist_target}__compile_resources" } + if (_incremental_apk) { + _incremental_android_manifest = + "$target_gen_dir/${_template_name}/AndroidManifest.incremental.xml" + _incremental_manifest_target_name = "${target_name}__incremental_manifest" + action_with_pydeps(_incremental_manifest_target_name) { + deps = [ ":$_merge_manifest_target" ] + script = + "//build/android/incremental_install/generate_android_manifest.py" + inputs = [ _android_manifest ] + outputs = [ _incremental_android_manifest ] + + args = [ + "--disable-isolated-processes", + "--src-manifest", + rebase_path(_android_manifest, root_build_dir), + "--dst-manifest", + rebase_path(_incremental_android_manifest, root_build_dir), + ] + } + } + _compile_resources_target = "${_template_name}__compile_resources" _compile_resources_rtxt_out = "${target_gen_dir}/${_compile_resources_target}_R.txt" _compile_resources_emit_ids_out = "${target_gen_dir}/${_compile_resources_target}.resource_ids" compile_resources(_compile_resources_target) { - forward_variables_from(invoker, - [ - "aapt_locale_allowlist", - "app_as_shared_lib", - "enforce_resource_overlays_in_tests", - "expected_android_manifest", - "expected_android_manifest_base", - "extra_verification_manifest", - "extra_verification_manifest_dep", - "manifest_package", - "max_sdk_version", - "no_xml_namespaces", - "package_id", - "package_name", - "png_to_webp", - "r_java_root_package_name", - "resource_exclusion_exceptions", - "resource_exclusion_regex", - "resource_values_filter_rules", - "shared_resources", - "shared_resources_allowlist_locales", - "uses_split", - ]) + forward_variables_from( + invoker, + [ + "aapt_locale_allowlist", + "app_as_shared_lib", + "enforce_resource_overlays_in_tests", + "expected_android_manifest", + "expected_android_manifest_base", + "expected_android_manifest_library_version_offset", + "expected_android_manifest_version_code_offset", + "manifest_package", + "max_sdk_version", + "package_id", + "png_to_webp", + "r_java_root_package_name", + "resource_exclusion_exceptions", + "resource_exclusion_regex", + "resource_values_filter_rules", + "shared_resources", + "shared_resources_allowlist_locales", + "uses_split", + ]) android_manifest = _android_manifest android_manifest_dep = ":$_merge_manifest_target" version_code = _version_code @@ -2486,6 +2594,10 @@ if (enable_java_templates) { resource_ids_provider_dep = _resource_ids_provider_dep } + if (defined(invoker.module_name)) { + package_name = invoker.module_name + } + if (defined(invoker.post_process_package_resources_script)) { post_process_script = invoker.post_process_package_resources_script } @@ -2499,15 +2611,11 @@ if (enable_java_templates) { build_config = _build_config build_config_dep = ":$_build_config_target" - android_sdk_dep = _android_sdk_dep - deps = _deps + deps = _java_assetres_deps + _non_java_deps - # The static library uses the R.txt files generated by the - # static_library_dependent_targets when generating the final R.java file. - if (_is_static_library_provider) { - foreach(_dep, invoker.static_library_dependent_targets) { - deps += [ "${_dep.name}__compile_resources" ] - } + if (_incremental_apk) { + android_manifest = _incremental_android_manifest + android_manifest_dep = ":$_incremental_manifest_target_name" } if (defined(invoker.apk_under_test)) { @@ -2563,8 +2671,9 @@ if (enable_java_templates) { _strip_resource_names = defined(invoker.strip_resource_names) && invoker.strip_resource_names && enable_arsc_obfuscation - _strip_unused_resources = defined(invoker.strip_unused_resources) && - invoker.strip_unused_resources + _strip_unused_resources = + defined(invoker.strip_unused_resources) && + invoker.strip_unused_resources && enable_unused_resource_stripping _optimize_resources = _strip_resource_names || _short_resource_paths || _strip_unused_resources } @@ -2578,7 +2687,7 @@ if (enable_java_templates) { } _optimize_resources_target = "${_template_name}__optimize_resources" optimize_resources(_optimize_resources_target) { - deps = _deps + [ ":$_compile_resources_target" ] + deps = _non_java_deps + [ ":$_compile_resources_target" ] short_resource_paths = _short_resource_paths strip_resource_names = _strip_resource_names if (_short_resource_paths) { @@ -2602,6 +2711,13 @@ if (enable_java_templates) { resources_config_paths += invoker.resources_config_paths } } + + if (_strip_unused_resources) { + # Copy the unused resources config to the final bundle output dir. + _copy_unused_resources_target = + "${_template_name}__copy_unused_resources" + _final_deps += [ ":$_copy_unused_resources_target" ] + } } else { not_needed(invoker, [ "resources_config_paths" ]) } @@ -2634,10 +2750,13 @@ if (enable_java_templates) { _final_deps += [ ":$_copy_arsc_target" ] } - _generate_native_libraries_java = - (!_is_bundle_module || _is_base_module) && - (_native_libs_deps != [] || _secondary_abi_native_libs_deps != []) && - !_uses_static_library_synchronized_proguard + if (defined(invoker.generate_native_libraries_java)) { + _generate_native_libraries_java = invoker.generate_native_libraries_java + } else { + _generate_native_libraries_java = + (!_is_bundle_module || _is_base_module) && !_omit_dex && + !defined(invoker.apk_under_test) + } if (_generate_native_libraries_java) { write_native_libraries_java("${_template_name}__native_libraries") { forward_variables_from(invoker, [ "main_component_library" ]) @@ -2645,14 +2764,22 @@ if (enable_java_templates) { # Do not add a dep on the generated_file target in order to avoid having # to build the native libraries before this target. The dependency is # instead captured via a depfile. - if (_native_libs_deps != []) { + if (_uses_static_library) { + _prefix = get_label_info(invoker.static_library_provider, + "target_gen_dir") + "/" + + get_label_info(invoker.static_library_provider, "name") + if (defined(invoker.static_library_provider_use_secondary_abi) && + invoker.static_library_provider_use_secondary_abi) { + native_libraries_list_file = "${_prefix}.secondary_abi_native_libs" + } else { + native_libraries_list_file = "${_prefix}.native_libs" + } + } else if (_native_libs_deps != []) { native_libraries_list_file = _shared_library_list_file - } else { + } else if (_secondary_abi_native_libs_deps != []) { native_libraries_list_file = _secondary_abi_shared_library_list_file } enable_chromium_linker = _use_chromium_linker - load_library_from_apk = _load_library_from_apk - use_modern_linker = _use_modern_linker use_final_fields = true } _srcjar_deps += [ ":${_template_name}__native_libraries" ] @@ -2667,6 +2794,15 @@ if (enable_java_templates) { _loadable_modules += _sanitizer_runtimes } + _assertions_implicitly_enabled = defined(invoker.custom_assertion_handler) + + # Many possible paths where we wouldn't use this variable. + not_needed([ "_assertions_implicitly_enabled" ]) + + _generate_buildconfig_java = !defined(invoker.apk_under_test) && !_omit_dex + if (defined(invoker.generate_buildconfig_java)) { + _generate_buildconfig_java = invoker.generate_buildconfig_java + } if (_generate_buildconfig_java) { generate_build_config_srcjar("${_template_name}__build_config_srcjar") { forward_variables_from(invoker, @@ -2674,15 +2810,19 @@ if (enable_java_templates) { "min_sdk_version", "isolated_splits_enabled", ]) - _bundles_supported = _is_bundle_module || _is_static_library_provider + _bundles_supported = _is_bundle_module if (defined(invoker.bundles_supported)) { _bundles_supported = invoker.bundles_supported } bundles_supported = _bundles_supported use_final_fields = true + assertions_implicitly_enabled = _assertions_implicitly_enabled enable_multidex = _enable_multidex is_incremental_install = _incremental_apk - if (defined(invoker.product_version_resources_dep)) { + write_clang_profiling_data = + use_clang_coverage && _generate_native_libraries_java + if (defined(invoker.build_config_include_product_version_resource) && + invoker.build_config_include_product_version_resource) { resources_version_variable = "org.chromium.base.R.string.product_version" } @@ -2700,55 +2840,21 @@ if (enable_java_templates) { build_config = _build_config java_package = _package use_chromium_linker = _use_chromium_linker - use_modern_linker = _use_modern_linker deps = [ ":$_build_config_target" ] } _srcjar_deps += [ ":$_locale_target_name" ] } } - if (_generate_final_jni) { - generate_jni_registration("${_template_name}__final_jni") { - forward_variables_from(invoker, - [ - "enable_native_mocks", - "require_native_mocks", - ]) - if (defined(invoker.bundle_target)) { - targets = [ invoker.bundle_target ] - } else { - targets = [ ":$_template_name" ] - } - if (_is_static_library_provider) { - foreach(_target, invoker.static_library_dependent_targets) { - targets += [ _target.name ] - } - } - if (defined(invoker.jni_registration_header)) { - header_output = invoker.jni_registration_header - } - if (defined(invoker.jni_sources_exclusions)) { - sources_exclusions = invoker.jni_sources_exclusions - } - } - _srcjar_deps += [ ":${_template_name}__final_jni" ] - } else { - not_needed(invoker, - [ - "enable_native_mocks", - "jni_registration_header", - ]) - } - - _java_target = "${_template_name}__java" - if (_is_bundle_module) { _add_view_trace_events = defined(invoker.add_view_trace_events) && invoker.add_view_trace_events && enable_trace_event_bytecode_rewriting } - java_library_impl(_java_target) { + # We cannot skip this target when omit_dex = true because it writes the + # build_config.json. + java_library_impl(_java_target_name) { forward_variables_from(invoker, [ "alternative_android_sdk_dep", @@ -2758,41 +2864,29 @@ if (enable_java_templates) { "apk_under_test", "base_module_target", "chromium_code", + "deps", "jacoco_never_instrument", "jar_excluded_patterns", "javac_args", + "mergeable_android_manifests", "native_lib_placeholders", + "parent_module_target", "processor_args_javac", "secondary_abi_loadable_modules", "secondary_native_lib_placeholders", "sources", - "static_library_dependent_targets", "library_always_compress", - "library_renames", ]) - deps = _deps - if (_uses_static_library_synchronized_proguard) { - if (!defined(jar_excluded_patterns)) { - jar_excluded_patterns = [] - } - - # The static library will provide all R.java files, but we still need to - # make the base module R.java files available at compile time since DFM - # R.java classes extend base module classes. - jar_excluded_patterns += [ - "*/R.class", - "*/R\$*.class", - ] - } + version_code = _version_code + version_name = _version_name if (_is_bundle_module) { type = "android_app_bundle_module" res_size_info_path = _res_size_info_path - is_base_module = _is_base_module - forward_variables_from(invoker, - [ - "version_code", - "version_name", - ]) + if (defined(invoker.module_name)) { + module_name = invoker.module_name + } else { + module_name = "base" + } add_view_trace_events = _add_view_trace_events } else { type = "android_apk" @@ -2829,11 +2923,6 @@ if (enable_java_templates) { if (defined(invoker.proguard_configs)) { proguard_configs += invoker.proguard_configs } - if (!enable_java_asserts && (!defined(testonly) || !testonly) && - # Injected JaCoCo code causes -checkdiscards to fail. - !use_jacoco_coverage) { - proguard_configs += [ "//build/android/dcheck_is_off.flags" ] - } if (!_is_bundle_module) { proguard_mapping_path = _proguard_mapping_path } @@ -2852,192 +2941,132 @@ if (enable_java_templates) { loadable_modules = _loadable_modules - uncompress_shared_libraries = _uncompress_shared_libraries - if (defined(_allowlist_r_txt_path) && _is_bundle_module) { # Used to write the file path to the target's .build_config.json only. base_allowlist_rtxt_path = _allowlist_r_txt_path } } - # TODO(cjhopman): This is only ever needed to calculate the list of tests to - # run. See build/android/pylib/instrumentation/test_jar.py. We should be - # able to just do that calculation at build time instead. - if (defined(invoker.dist_ijar_path)) { - _dist_ijar_path = invoker.dist_ijar_path - dist_jar("${_template_name}_dist_ijar") { - override_build_config = _build_config - output = _dist_ijar_path - data = [ _dist_ijar_path ] - use_interface_jars = true - deps = [ - ":$_build_config_target", - ":$_java_target", - ] + # Old name for variable, mark as not_needed while it is being renamed + # downstream. Remove after all references to baseline_profile_path have been + # changed. + not_needed(invoker, [ "baseline_profile_path" ]) + + _enable_art_profile_optimizations = + defined(invoker.art_profile_path) && _proguard_enabled + + if (_enable_art_profile_optimizations) { + _include_baseline_profile = enable_baseline_profiles + _enable_startup_profile = enable_startup_profiles + if (_include_baseline_profile) { + _obfuscated_art_profile = + "$target_out_dir/${target_name}.obfuscated.hrf" } + } else { + not_needed(invoker, [ "art_profile_path" ]) } - if (_uses_static_library_synchronized_proguard) { - _final_dex_target_dep = "${invoker.static_library_provider}__dexsplitter" - } else if (_is_bundle_module && _proguard_enabled) { - _final_deps += [ ":$_java_target" ] + if (_is_bundle_module || _omit_dex) { + # Dex generation for app bundle modules take place in the + # android_app_bundle template. + not_needed(invoker, [ "custom_assertion_handler" ]) } else if (_incremental_apk) { - if (defined(invoker.enable_proguard_checks)) { - not_needed(invoker, [ "enable_proguard_checks" ]) - } + not_needed(invoker, + [ + "enable_proguard_checks", + "custom_assertion_handler", + ]) } else { - # Dex generation for app bundle modules with proguarding enabled takes - # place later due to synchronized proguarding. _final_dex_target_name = "${_template_name}__final_dex" dex(_final_dex_target_name) { forward_variables_from(invoker, [ "enable_proguard_checks", + "custom_assertion_handler", "proguard_enable_obfuscation", + "repackage_classes", ]) min_sdk_version = _min_sdk_version proguard_enabled = _proguard_enabled build_config = _build_config + output = _final_dex_path + enable_multidex = _enable_multidex deps = [ ":$_build_config_target", - ":$_java_target", + ":$_java_target_name", ] if (_proguard_enabled) { - deps += _deps + [ ":$_compile_resources_target" ] + # Generates proguard configs + deps += [ ":$_compile_resources_target" ] proguard_mapping_path = _proguard_mapping_path - proguard_sourcefile_suffix = "$android_channel-$_version_code" has_apk_under_test = defined(invoker.apk_under_test) - } else if (_min_sdk_version >= default_min_sdk_version) { - # Enable dex merging only when min_sdk_version is >= what the library - # .dex files were created with. - input_dex_filearg = - "@FileArg(${_rebased_build_config}:final_dex:all_dex_files)" - } else { - input_classes_filearg = - "@FileArg($_rebased_build_config:deps_info:device_classpath)" - } - if (_is_static_library_provider) { - # The list of input jars is already recorded in the .build_config.json, but - # we need to explicitly add the java deps here to ensure they're - # available to be used as inputs to the dex step. - foreach(_dep, invoker.static_library_dependent_targets) { - _target_label = get_label_info(_dep.name, "label_no_toolchain") - deps += [ "${_target_label}__java" ] + if (_enable_art_profile_optimizations) { + input_art_profile = invoker.art_profile_path + if (_include_baseline_profile) { + output_art_profile = _obfuscated_art_profile + } + enable_startup_profile = _enable_startup_profile + } + + # Must not be set via write_build_config, because that will cause it + # to be picked up by test apks that use apk_under_test. + if (!_assertions_implicitly_enabled && !enable_java_asserts && + (!defined(testonly) || !testonly) && + # Injected JaCoCo code causes -checkdiscards to fail. + !use_jacoco_coverage) { + proguard_configs = [ "//build/android/dcheck_is_off.flags" ] } - output = _static_library_sync_dex_path - is_static_library = true } else { - output = _final_dex_path + if (_min_sdk_version >= default_min_sdk_version) { + # Enable dex merging only when min_sdk_version is >= what the library + # .dex files were created with. + input_dex_filearg = + "@FileArg(${_rebased_build_config}:deps_info:all_dex_files)" + + # Pure dex-merge. + enable_desugar = false + } else { + input_classes_filearg = + "@FileArg($_rebased_build_config:deps_info:device_classpath)" + } } - enable_multidex = _enable_multidex # The individual dependencies would have caught real missing deps in # their respective dex steps. False positives that were suppressed at # per-target dex steps are emitted here since this may use jar files # rather than dex files. - ignore_desugar_missing_deps = true + if (!defined(enable_desugar)) { + ignore_desugar_missing_deps = true + } if (_enable_main_dex_list) { - extra_main_dex_proguard_config = _generated_proguard_main_dex_config + # Generates main-dex config. deps += [ ":$_compile_resources_target" ] + extra_main_dex_proguard_config = _generated_proguard_main_dex_config } } _final_dex_target_dep = ":$_final_dex_target_name" - # For static libraries, a single Proguard run is performed that includes - # code from the static library APK and the APKs that use the static - # library (done via. classpath merging in write_build_config.py). - # This dexsplitter target splits the synchronized dex output into dex - # files for each APK/Bundle. In the Bundle case, another dexsplitter step - # is later performed to split the dex further for each feature module. - if (_is_static_library_provider && _proguard_enabled) { - _static_library_modules = [] - foreach(_target, invoker.static_library_dependent_targets) { - _apk_as_module = _target.name - _module_config_target = "${_apk_as_module}$build_config_target_suffix" - _module_gen_dir = get_label_info(_apk_as_module, "target_gen_dir") - _module_name = get_label_info(_apk_as_module, "name") - _module_config = "$_module_gen_dir/$_module_name.build_config.json" - _static_library_modules += [ - { - name = _module_name - build_config = _module_config - build_config_target = _module_config_target - }, - ] - } - - _static_library_dexsplitter_target = "${_template_name}__dexsplitter" - dexsplitter(_static_library_dexsplitter_target) { - input_dex_zip = _static_library_sync_dex_path - proguard_mapping = _proguard_mapping_path - deps = [ - ":$_build_config_target", - "$_final_dex_target_dep", - ] - all_modules = [ - { - name = "base" - build_config = _build_config - build_config_target = ":$_build_config_target" - }, - ] + _static_library_modules - feature_jars_args = [ - "--feature-jars", - "@FileArg($_rebased_build_config:deps_info:" + - "static_library_dependent_classpath_configs:" + - "$_rebased_build_config)", - ] - foreach(_module, _static_library_modules) { - _rebased_module_config = - rebase_path(_module.build_config, root_build_dir) - feature_jars_args += [ - "--feature-jars", - "@FileArg($_rebased_build_config:deps_info:" + - "static_library_dependent_classpath_configs:" + - "$_rebased_module_config)", - ] - } - } - _final_deps += [ ":$_static_library_dexsplitter_target" ] - _validate_dex_target = "${_template_name}__validate_dex" - action_with_pydeps(_validate_dex_target) { - depfile = "$target_gen_dir/$target_name.d" - script = - "//build/android/gyp/validate_static_library_dex_references.py" - inputs = [ _build_config ] - _stamp = "$target_gen_dir/$target_name.stamp" - outputs = [ _stamp ] + if (_enable_art_profile_optimizations && _include_baseline_profile) { + _binary_profile_target = "${_template_name}__binary_baseline_profile" + _binary_baseline_profile_path = + "$target_out_dir/$_template_name.baseline.prof" + _binary_baseline_profile_metadata_path = + _binary_baseline_profile_path + "m" + create_binary_profile(_binary_profile_target) { + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + binary_baseline_profile_path = _binary_baseline_profile_path + binary_baseline_profile_metadata_path = + _binary_baseline_profile_metadata_path + build_config = _build_config + input_profile_path = _obfuscated_art_profile deps = [ ":$_build_config_target", - ":$_static_library_dexsplitter_target", - ] - args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--stamp", - rebase_path(_stamp, root_build_dir), - "--static-library-dex", - "@FileArg($_rebased_build_config:final_dex:path)", + _final_dex_target_dep, ] - foreach(_module, _static_library_modules) { - inputs += [ _module.build_config ] - _rebased_config = rebase_path(_module.build_config, root_build_dir) - deps += [ _module.build_config_target ] - args += [ - "--static-library-dependent-dex", - "@FileArg($_rebased_config:final_dex:path)", - ] - } } - - # TODO(crbug.com/1032609): Switch to using R8's support for feature - # aware ProGuard and get rid of "_validate_dex_target" or figure out - # why some classes aren't properly being kept. - # _final_deps += [ ":$_validate_dex_target" ] - _final_dex_target_dep = ":$_static_library_dexsplitter_target" } } @@ -3054,9 +3083,9 @@ if (enable_java_templates) { if (_is_bundle_module) { _final_deps += [ - ":$_merge_manifest_target", ":$_build_config_target", ":$_compile_resources_target", + ":$_merge_manifest_target", ] + _all_native_libs_deps if (_optimize_resources) { _final_deps += [ ":$_optimize_resources_target" ] @@ -3077,11 +3106,11 @@ if (enable_java_templates) { name = "${invoker.name}.apk" build_config = _build_config res_size_info_path = _res_size_info_path - deps = _deps + [ - ":$_build_config_target", - ":$_compile_resources_target", - ":$_java_target", - ] + deps = [ + ":$_build_config_target", + ":$_compile_resources_target", + ":$_java_target_name", + ] } _final_deps += [ ":$_size_info_target" ] } else { @@ -3089,51 +3118,6 @@ if (enable_java_templates) { } } - _keystore_path = android_keystore_path - _keystore_name = android_keystore_name - _keystore_password = android_keystore_password - - if (defined(invoker.keystore_path)) { - _keystore_path = invoker.keystore_path - _keystore_name = invoker.keystore_name - _keystore_password = invoker.keystore_password - } - - if (_incremental_apk) { - _incremental_compiled_resources_path = "${_base_path}_incremental.ap_" - _incremental_compile_resources_target_name = - "${target_name}__compile_incremental_resources" - - action_with_pydeps(_incremental_compile_resources_target_name) { - deps = [ - ":$_build_config_target", - ":$_compile_resources_target", - ":$_merge_manifest_target", - ] - script = - "//build/android/incremental_install/generate_android_manifest.py" - inputs = [ - _android_manifest, - _build_config, - _arsc_resources_path, - ] - outputs = [ _incremental_compiled_resources_path ] - - args = [ - "--disable-isolated-processes", - "--src-manifest", - rebase_path(_android_manifest, root_build_dir), - "--in-apk", - rebase_path(_arsc_resources_path, root_build_dir), - "--out-apk", - rebase_path(_incremental_compiled_resources_path, root_build_dir), - "--aapt2-path", - rebase_path(android_sdk_tools_bundle_aapt2, root_build_dir), - "--android-sdk-jars=@FileArg($_rebased_build_config:android:sdk_jars)", - ] - } - } - _create_apk_target = "${_template_name}__create" _final_deps += [ ":$_create_apk_target" ] package_apk("$_create_apk_target") { @@ -3141,13 +3125,14 @@ if (enable_java_templates) { [ "expected_libs_and_assets", "expected_libs_and_assets_base", + "keystore_name", + "keystore_path", + "keystore_password", "native_lib_placeholders", "secondary_abi_loadable_modules", "secondary_native_lib_placeholders", "uncompress_dex", - "uncompress_shared_libraries", "library_always_compress", - "library_renames", ]) if (defined(expected_libs_and_assets)) { @@ -3156,32 +3141,27 @@ if (enable_java_templates) { } build_config = _build_config - keystore_name = _keystore_name - keystore_path = _keystore_path - keystore_password = _keystore_password min_sdk_version = _min_sdk_version - uncompress_shared_libraries = _uncompress_shared_libraries - - deps = _deps + [ ":$_build_config_target" ] + packaged_resources_path = _arsc_resources_path - if ((!_proguard_enabled || _incremental_apk) && - enable_jdk_library_desugaring) { - _all_jdk_libs = "//build/android:all_jdk_libs" - deps += [ _all_jdk_libs ] - jdk_libs_dex = get_label_info(_all_jdk_libs, "target_out_dir") + - "/all_jdk_libs.l8.dex" - } + # Need full deps rather than _non_java_deps, because loadable_modules + # may include .so files extracted by __unpack_aar targets. + deps = _invoker_deps + [ ":$_build_config_target" ] if (_incremental_apk) { _dex_target = "//build/android/incremental_install:apk_dex" deps += [ - ":${_incremental_compile_resources_target_name}", + ":$_compile_resources_target", _dex_target, ] dex_path = get_label_info(_dex_target, "target_out_dir") + "/apk.dex" + # Incremental APKs cannot be installed via `adb install` as such they + # should be clearly named/labeled "incremental". + output_apk_path = _incremental_apk_path + # All native libraries are side-loaded, so use a placeholder to force # the proper bitness for the app. _has_native_libs = @@ -3189,28 +3169,35 @@ if (enable_java_templates) { if (_has_native_libs && !defined(native_lib_placeholders)) { native_lib_placeholders = [ "libfix.crbug.384638.so" ] } - - packaged_resources_path = _incremental_compiled_resources_path - output_apk_path = _incremental_apk_path } else { loadable_modules = _loadable_modules deps += _all_native_libs_deps + [ - ":$_merge_manifest_target", ":$_compile_resources_target", + ":$_merge_manifest_target", ] if (defined(_final_dex_path)) { dex_path = _final_dex_path deps += [ _final_dex_target_dep ] + if (_enable_art_profile_optimizations && + _include_baseline_profile) { + # extra_assets is a list of ["{src_path}:{dst_path}"] + extra_assets = [ + rebase_path(_binary_baseline_profile_path, root_build_dir) + + ":dexopt/baseline.prof", + rebase_path(_binary_baseline_profile_metadata_path, + root_build_dir) + ":dexopt/baseline.profm", + ] + deps += [ ":$_binary_profile_target" ] + } } - packaged_resources_path = _arsc_resources_path + output_apk_path = _final_apk_path if (defined(_native_libs_filearg)) { native_libs_filearg = _native_libs_filearg secondary_abi_native_libs_filearg = "@FileArg($_rebased_build_config:native:secondary_abi_libraries)" } - output_apk_path = _final_apk_path } } } @@ -3232,7 +3219,7 @@ if (enable_java_templates) { args = [ "--apk-path=$_rebased_incremental_apk_path", "--output-path=$_rebased_incremental_install_json_path", - "--dex-file=@FileArg($_rebased_build_config:final_dex:all_dex_files)", + "--dex-file=@FileArg($_rebased_build_config:deps_info:all_dex_files)", ] if (_proguard_enabled) { args += [ "--show-proguard-warning" ] @@ -3247,10 +3234,7 @@ if (enable_java_templates) { args += [ "--native-libs=$_rebased_loadable_modules" ] } } - _final_deps += [ - ":$_java_target", - ":$_write_installer_json_rule_name", - ] + _final_deps += [ ":$_write_installer_json_rule_name" ] } # Generate apk operation related script. @@ -3337,7 +3321,9 @@ if (enable_java_templates) { ]) build_config = _build_config build_config_dep = ":$_build_config_target" - deps = [ ":$_java_target" ] + + # This will use library subtargets under-the-hood + deps = [ ":$_java_target_name" ] if (defined(invoker.lint_suppressions_dep)) { deps += [ invoker.lint_suppressions_dep ] } @@ -3349,6 +3335,7 @@ if (enable_java_templates) { not_needed(invoker, [ "lint_baseline_file", + "lint_jar_path", "lint_min_sdk_version", "lint_suppressions_dep", "lint_suppressions_file", @@ -3361,8 +3348,15 @@ if (enable_java_templates) { "assert_no_deps", "data", "data_deps", - "metadata", ]) + metadata = { + if (defined(invoker.metadata)) { + forward_variables_from(invoker.metadata, "*") + } + + # Allows metadata collection via apk targets that traverse only java deps. + java_walk_keys = [ ":$_java_target_name" ] + } # Generate apk related operations at runtime. public_deps = _final_deps @@ -3372,8 +3366,7 @@ if (enable_java_templates) { } # Include unstripped native libraries so tests can symbolize stacks. - data_deps += _all_native_libs_deps - + data_deps += _all_native_libs_deps + [ ":${_java_target_name}__validate" ] if (_enable_lint) { data_deps += [ ":${target_name}__lint" ] } @@ -3415,96 +3408,97 @@ if (enable_java_templates) { # TODO(crbug.com/1042017): Remove. not_needed(invoker, [ "no_build_hooks" ]) android_apk_or_module(target_name) { - forward_variables_from(invoker, - [ - "aapt_locale_allowlist", - "additional_jar_files", - "alternative_android_sdk_dep", - "android_manifest", - "android_manifest_dep", - "annotation_processor_deps", - "apk_under_test", - "app_as_shared_lib", - "assert_no_deps", - "bundles_supported", - "chromium_code", - "command_line_flags_file", - "create_apk_script", - "data", - "data_deps", - "deps", - "dist_ijar_path", - "enable_lint", - "enable_multidex", - "enable_native_mocks", - "enable_proguard_checks", - "enforce_resource_overlays_in_tests", - "expected_android_manifest", - "expected_android_manifest_base", - "expected_libs_and_assets", - "expected_libs_and_assets_base", - "generate_buildconfig_java", - "generate_final_jni", - "include_size_info", - "input_jars_paths", - "use_modern_linker", - "jacoco_never_instrument", - "javac_args", - "jni_registration_header", - "jni_sources_exclusions", - "keystore_name", - "keystore_password", - "keystore_path", - "lint_baseline_file", - "lint_min_sdk_version", - "lint_suppressions_dep", - "lint_suppressions_file", - "load_library_from_apk", - "loadable_modules", - "manifest_package", - "max_sdk_version", - "product_config_java_packages", - "main_component_library", - "min_sdk_version", - "native_lib_placeholders", - "never_incremental", - "no_xml_namespaces", - "png_to_webp", - "post_process_package_resources_script", - "processor_args_javac", - "product_version_resources_dep", - "proguard_configs", - "proguard_enabled", - "proguard_enable_obfuscation", - "r_java_root_package_name", - "resource_exclusion_exceptions", - "resource_exclusion_regex", - "resource_ids_provider_dep", - "resource_values_filter_rules", - "require_native_mocks", - "secondary_abi_loadable_modules", - "secondary_abi_shared_libraries", - "secondary_native_lib_placeholders", - "shared_libraries", - "shared_resources", - "shared_resources_allowlist_locales", - "shared_resources_allowlist_target", - "sources", - "srcjar_deps", - "static_library_dependent_targets", - "static_library_provider", - "static_library_synchronized_proguard", - "target_sdk_version", - "testonly", - "uncompress_dex", - "uncompress_shared_libraries", - "library_always_compress", - "library_renames", - "use_chromium_linker", - "version_code", - "version_name", - "visibility", - ]) + forward_variables_from( + invoker, + [ + "aapt_locale_allowlist", + "additional_jar_files", + "allow_unused_jni_from_native", + "alternative_android_sdk_dep", + "android_manifest", + "android_manifest_dep", + "annotation_processor_deps", + "apk_under_test", + "app_as_shared_lib", + "art_profile_path", + "assert_no_deps", + "baseline_profile_path", + "build_config_include_product_version_resource", + "bundles_supported", + "chromium_code", + "command_line_flags_file", + "create_apk_script", + "custom_assertion_handler", + "data", + "data_deps", + "deps", + "enable_lint", + "enable_jni_multiplexing", + "enable_multidex", + "enable_proguard_checks", + "enforce_resource_overlays_in_tests", + "expected_android_manifest", + "expected_android_manifest_base", + "expected_android_manifest_library_version_offset", + "expected_android_manifest_version_code_offset", + "expected_libs_and_assets", + "expected_libs_and_assets_base", + "generate_buildconfig_java", + "generate_native_libraries_java", + "include_size_info", + "input_jars_paths", + "jacoco_never_instrument", + "javac_args", + "keystore_name", + "keystore_password", + "keystore_path", + "lint_baseline_file", + "lint_min_sdk_version", + "lint_suppressions_dep", + "lint_suppressions_file", + "loadable_modules", + "manifest_package", + "max_sdk_version", + "mergeable_android_manifests", + "product_config_java_packages", + "main_component_library", + "min_sdk_version", + "native_lib_placeholders", + "never_incremental", + "omit_dex", + "png_to_webp", + "post_process_package_resources_script", + "processor_args_javac", + "proguard_configs", + "proguard_enabled", + "proguard_enable_obfuscation", + "r_java_root_package_name", + "repackage_classes", + "resource_exclusion_exceptions", + "resource_exclusion_regex", + "resource_ids_provider_dep", + "resource_values_filter_rules", + "require_native_mocks", + "secondary_abi_loadable_modules", + "secondary_abi_shared_libraries", + "secondary_native_lib_placeholders", + "shared_libraries", + "shared_resources", + "shared_resources_allowlist_locales", + "shared_resources_allowlist_target", + "sources", + "srcjar_deps", + "static_library_provider", + "static_library_provider_use_secondary_abi", + "target_sdk_version", + "testonly", + "uncompress_dex", + "library_always_compress", + "use_chromium_linker", + "version_code", + "version_name", + "visibility", + ]) is_bundle_module = false name = invoker.apk_name if (defined(invoker.final_apk_path)) { @@ -3514,10 +3508,14 @@ if (enable_java_templates) { } metadata = { install_artifacts = [ final_apk_path ] + if (defined(invoker.static_library_provider)) { + install_artifacts_barrier = [] + } } - if (defined(invoker.static_library_provider)) { - metadata.install_artifacts_barrier = [] - } + + # TODO(smaier) - there were some remaining usages of this in angle. Once + # they are removed, remove this line. + not_needed(invoker, [ "generate_final_jni" ]) } } @@ -3531,8 +3529,6 @@ if (enable_java_templates) { # base module (optional). # base_module_target: Base module target of the bundle this module will be # added to (optional). Can only be specified for non-base modules. - # bundle_target: Bundle target that this module belongs to (optional). - # Can only be specified for base modules. template("android_app_bundle_module") { _is_base_module = defined(invoker.is_base_module) && invoker.is_base_module @@ -3544,7 +3540,15 @@ if (enable_java_templates) { assert(!defined(invoker.shared_resources_allowlist_target)) assert(!defined(invoker.shared_resources_allowlist_locales)) assert(defined(invoker.base_module_target)) - assert(!defined(invoker.bundle_target)) + } + + # android_app_bundle's write_build_config expects module targets to be named + # according to java_target_patterns otherwise it ignores them when listed in + # possible_config_deps. See https://crbug.com/1418398. + if (filter_exclude([ target_name ], [ "*_bundle_module" ]) != []) { + assert(false, + "Invalid android_app_bundle_module target name ($target_name), " + + "must end in _bundle_module.") } # TODO(tiborg): We have several flags that are necessary for workarounds @@ -3556,86 +3560,91 @@ if (enable_java_templates) { # target. Doing so would keep the bundle modules independent from the bundle # and potentially reuse the same bundle modules for multiple bundles. android_apk_or_module(target_name) { - forward_variables_from(invoker, - [ - "add_view_trace_events", - "aapt_locale_allowlist", - "additional_jar_files", - "alternative_android_sdk_dep", - "android_manifest", - "android_manifest_dep", - "annotation_processor_deps", - "app_as_shared_lib", - "assert_no_deps", - "base_module_target", - "bundle_target", - "chromium_code", - "data", - "data_deps", - "deps", - "enable_multidex", - "expected_android_manifest", - "expected_android_manifest_base", - "extra_verification_manifest", - "extra_verification_manifest_dep", - "generate_buildconfig_java", - "generate_final_jni", - "input_jars_paths", - "isolated_splits_enabled", - "is_base_module", - "jacoco_never_instrument", - "jar_excluded_patterns", - "javac_args", - "jni_registration_header", - "jni_sources_exclusions", - "load_library_from_apk", - "loadable_modules", - "product_config_java_packages", - "manifest_package", - "max_sdk_version", - "min_sdk_version", - "native_lib_placeholders", - "no_xml_namespaces", - "package_id", - "package_name", - "png_to_webp", - "processor_args_javac", - "product_version_resources_dep", - "proguard_configs", - "proguard_enabled", - "proguard_enable_obfuscation", - "resource_exclusion_exceptions", - "resource_exclusion_regex", - "resource_ids_provider_dep", - "resource_values_filter_rules", - "resources_config_paths", - "secondary_abi_loadable_modules", - "secondary_abi_shared_libraries", - "secondary_native_lib_placeholders", - "shared_libraries", - "shared_resources", - "shared_resources_allowlist_locales", - "shared_resources_allowlist_target", - "short_resource_paths", - "srcjar_deps", - "static_library_provider", - "static_library_synchronized_proguard", - "strip_resource_names", - "strip_unused_resources", - "target_sdk_version", - "testonly", - "uncompress_shared_libraries", - "library_always_compress", - "library_renames", - "use_chromium_linker", - "use_modern_linker", - "uses_split", - "version_code", - "version_name", - "visibility", - ]) + forward_variables_from( + invoker, + [ + "add_view_trace_events", + "aapt_locale_allowlist", + "additional_jar_files", + "allow_unused_jni_from_native", + "alternative_android_sdk_dep", + "android_manifest", + "android_manifest_dep", + "annotation_processor_deps", + "app_as_shared_lib", + "assert_no_deps", + "base_module_target", + "build_config_include_product_version_resource", + "bundle_target", + "chromium_code", + "custom_assertion_handler", + "data", + "data_deps", + "deps", + "enable_jni_multiplexing", + "enable_multidex", + "expected_android_manifest", + "expected_android_manifest_base", + "expected_android_manifest_library_version_offset", + "expected_android_manifest_version_code_offset", + "generate_buildconfig_java", + "generate_native_libraries_java", + "input_jars_paths", + "isolated_splits_enabled", + "is_base_module", + "jacoco_never_instrument", + "jar_excluded_patterns", + "javac_args", + "loadable_modules", + "product_config_java_packages", + "main_component_library", + "manifest_package", + "max_sdk_version", + "min_sdk_version", + "mergeable_android_manifests", + "module_name", + "native_lib_placeholders", + "package_id", + "parent_module_target", + "png_to_webp", + "processor_args_javac", + "proguard_configs", + "proguard_enabled", + "proguard_enable_obfuscation", + "repackage_classes", + "resource_exclusion_exceptions", + "resource_exclusion_regex", + "resource_ids_provider_dep", + "resource_values_filter_rules", + "resources_config_paths", + "secondary_abi_loadable_modules", + "secondary_abi_shared_libraries", + "secondary_native_lib_placeholders", + "shared_libraries", + "shared_resources", + "shared_resources_allowlist_locales", + "shared_resources_allowlist_target", + "short_resource_paths", + "srcjar_deps", + "static_library_provider", + "static_library_provider_use_secondary_abi", + "strip_resource_names", + "strip_unused_resources", + "target_sdk_version", + "testonly", + "library_always_compress", + "use_chromium_linker", + "uses_split", + "version_code", + "version_name", + "visibility", + ]) is_bundle_module = true generate_buildconfig_java = _is_base_module + if (defined(uses_split)) { + assert(defined(parent_module_target), + "Must set parent_module_target when uses_split is set") + } } } @@ -3645,7 +3654,6 @@ if (enable_java_templates) { # # Arguments: # android_test_apk: The target containing the tests. - # android_test_apk_name: The apk_name in android_test_apk # # The following args are optional: # apk_under_test: The target being tested. @@ -3665,7 +3673,6 @@ if (enable_java_templates) { # Example # instrumentation_test_runner("foo_test_for_bar") { # android_test_apk: ":foo" - # android_test_apk_name: "Foo" # apk_under_test: ":bar" # } template("instrumentation_test_runner") { @@ -3673,8 +3680,97 @@ if (enable_java_templates) { action("${invoker.target_name}__rts_filters") { script = "//build/add_rts_filters.py" rts_file = "${root_build_dir}/gen/rts/${invoker.target_name}.filter" - args = [ rebase_path(rts_file, root_build_dir) ] - outputs = [ rts_file ] + inverted_rts_file = + "${root_build_dir}/gen/rts/${invoker.target_name}_inverted.filter" + args = [ + rebase_path(rts_file, root_build_dir), + rebase_path(inverted_rts_file, root_build_dir), + ] + outputs = [ + rts_file, + inverted_rts_file, + ] + } + } + _incremental_apk = !(defined(invoker.never_incremental) && + invoker.never_incremental) && incremental_install + _apk_operations_target_name = "${target_name}__apk_operations" + _apk_target = invoker.android_test_apk + if (defined(invoker.apk_under_test) && !_incremental_apk) { + # The actual target is defined in the test_runner_script template. + _install_artifacts_json = + "${target_gen_dir}/${target_name}.install_artifacts" + _install_artifacts_target_name = "${target_name}__install_artifacts" + } + + action_with_pydeps(_apk_operations_target_name) { + testonly = true + script = "//build/android/gyp/create_test_apk_wrapper_script.py" + deps = [] + _generated_script = "$root_build_dir/bin/${invoker.target_name}" + outputs = [ _generated_script ] + _apk_build_config = + get_label_info(_apk_target, "target_gen_dir") + "/" + + get_label_info(_apk_target, "name") + ".build_config.json" + _rebased_apk_build_config = rebase_path(_apk_build_config, root_build_dir) + args = [ + "--script-output-path", + rebase_path(_generated_script, root_build_dir), + "--package-name", + "@FileArg($_rebased_apk_build_config:deps_info:package_name)", + ] + deps += [ "${_apk_target}$build_config_target_suffix" ] + if (_incremental_apk) { + args += [ + "--test-apk-incremental-install-json", + "@FileArg($_rebased_apk_build_config:deps_info:incremental_install_json_path)", + ] + } else { + args += [ + "--test-apk", + "@FileArg($_rebased_apk_build_config:deps_info:apk_path)", + ] + } + if (defined(invoker.proguard_mapping_path) && !_incremental_apk) { + args += [ + "--proguard-mapping-path", + rebase_path(invoker.proguard_mapping_path, root_build_dir), + ] + } + if (defined(invoker.apk_under_test)) { + if (_incremental_apk) { + deps += [ "${invoker.apk_under_test}$build_config_target_suffix" ] + _apk_under_test_build_config = + get_label_info(invoker.apk_under_test, "target_gen_dir") + "/" + + get_label_info(invoker.apk_under_test, "name") + + ".build_config.json" + _rebased_apk_under_test_build_config = + rebase_path(_apk_under_test_build_config, root_build_dir) + _apk_under_test = "@FileArg($_rebased_apk_under_test_build_config:deps_info:incremental_apk_path)" + } else { + deps += [ ":${_install_artifacts_target_name}" ] + _rebased_install_artifacts_json = + rebase_path(_install_artifacts_json, root_build_dir) + _apk_under_test = "@FileArg($_rebased_install_artifacts_json[])" + } + args += [ + "--additional-apk", + _apk_under_test, + ] + } + if (defined(invoker.additional_apks)) { + foreach(additional_apk, invoker.additional_apks) { + deps += [ "$additional_apk$build_config_target_suffix" ] + _build_config = + get_label_info(additional_apk, "target_gen_dir") + "/" + + get_label_info(additional_apk, "name") + ".build_config.json" + _rebased_build_config = rebase_path(_build_config, root_build_dir) + args += [ + "--additional-apk", + "@FileArg($_rebased_build_config:deps_info:apk_path)", + ] + } + deps += invoker.additional_apks } } test_runner_script(target_name) { @@ -3689,24 +3785,19 @@ if (enable_java_templates) { "extra_args", "fake_modules", "ignore_all_data_deps", + "is_unit_test", "modules", "proguard_mapping_path", - "public_deps", "use_webview_provider", ]) test_name = invoker.target_name test_type = "instrumentation" apk_target = invoker.android_test_apk - test_jar = "$root_build_dir/test.lib.java/" + - invoker.android_test_apk_name + ".jar" - incremental_apk = !(defined(invoker.never_incremental) && - invoker.never_incremental) && incremental_install + incremental_apk = _incremental_apk public_deps = [ + ":$_apk_operations_target_name", apk_target, - - # Required by test runner to enumerate test list. - "${apk_target}_dist_ijar", ] if (defined(invoker.apk_under_test)) { public_deps += [ invoker.apk_under_test ] @@ -3771,8 +3862,6 @@ if (enable_java_templates) { } if (defined(invoker.apk_under_test)) { data_deps += [ invoker.apk_under_test ] - } else { - enable_native_mocks = true } if (defined(invoker.apk_under_test)) { @@ -3811,7 +3900,6 @@ if (enable_java_templates) { data += [ "$_final_apk_path.mapping" ] } - dist_ijar_path = "$root_build_dir/test.lib.java/${invoker.apk_name}.jar" create_apk_script = false forward_variables_from(invoker, @@ -3820,6 +3908,8 @@ if (enable_java_templates) { "data", "data_deps", "deps", + "extra_args", + "is_unit_test", "proguard_configs", ]) } @@ -3848,13 +3938,13 @@ if (enable_java_templates) { "deps", "extra_args", "ignore_all_data_deps", + "is_unit_test", "modules", "never_incremental", "public_deps", "use_webview_provider", ]) android_test_apk = ":${_apk_target_name}" - android_test_apk_name = invoker.apk_name if (defined(invoker.proguard_enabled) && invoker.proguard_enabled) { proguard_mapping_path = "$root_build_dir/apks/${invoker.apk_name}.apk.mapping" @@ -3921,7 +4011,6 @@ if (enable_java_templates) { forward_variables_from(invoker, "*", TESTONLY_AND_VISIBILITY) testonly = true create_apk_script = false - enable_native_mocks = true # TODO(crbug.com/1099849): Figure out why angle tests fail to launch # with newer target_sdk_version. @@ -3945,7 +4034,6 @@ if (enable_java_templates) { if (!defined(use_default_launcher) || use_default_launcher) { deps += [ - "//base:base_java", "//build/android/gtest_apk:native_test_instrumentation_test_runner_java", "//testing/android/native_test:native_test_java", ] @@ -4043,6 +4131,10 @@ if (enable_java_templates) { # absolute paths, such as for third_party or generated .proto files. # http://crbug.com/691451 tracks fixing this. # + # generator_plugin_label (optional) + # GN label for plugin executable which generates custom cc stubs. + # Don't specify a toolchain, host toolchain is assumed. + # # Example: # proto_java_library("foo_proto_java") { # proto_path = "src/foo" @@ -4059,24 +4151,47 @@ if (enable_java_templates) { _srcjar_path = "$target_gen_dir/$target_name.srcjar" script = "//build/protoc_java.py" - deps = [] if (defined(invoker.deps)) { - deps += invoker.deps + # Need to care only about targets that might generate .proto files. + # No need to depend on java_library or android_resource targets. + deps = filter_exclude(invoker.deps, java_target_patterns) } sources = invoker.sources depfile = "$target_gen_dir/$target_name.d" outputs = [ _srcjar_path ] args = [ - "--depfile", - rebase_path(depfile, root_build_dir), - "--protoc", - rebase_path(android_protoc_bin, root_build_dir), - "--proto-path", - rebase_path(invoker.proto_path, root_build_dir), - "--srcjar", - rebase_path(_srcjar_path, root_build_dir), - ] + rebase_path(sources, root_build_dir) + "--depfile", + rebase_path(depfile, root_build_dir), + "--protoc", + rebase_path(android_protoc_bin, root_build_dir), + "--proto-path", + rebase_path(invoker.proto_path, root_build_dir), + "--srcjar", + rebase_path(_srcjar_path, root_build_dir), + ] + + if (defined(invoker.generator_plugin_label)) { + if (host_os == "win") { + _host_executable_suffix = ".exe" + } else { + _host_executable_suffix = "" + } + + _plugin_host_label = + invoker.generator_plugin_label + "($host_toolchain)" + _plugin_path = + get_label_info(_plugin_host_label, "root_out_dir") + "/" + + get_label_info(_plugin_host_label, "name") + _host_executable_suffix + args += [ + "--plugin", + rebase_path(_plugin_path, root_build_dir), + ] + deps += [ _plugin_host_label ] + inputs = [ _plugin_path ] + } + + args += rebase_path(sources, root_build_dir) if (defined(invoker.import_dirs)) { foreach(_import_dir, invoker.import_dirs) { @@ -4167,7 +4282,7 @@ if (enable_java_templates) { chromium_code = false sources = [] srcjar_deps = [ ":${_template_name}__flatc_java" ] - deps = [ "//third_party/android_deps:com_google_flatbuffers_flatbuffers_java_java" ] + deps = [ "//third_party/flatbuffers:flatbuffers_java" ] if (defined(invoker.deps)) { deps += invoker.deps } @@ -4274,6 +4389,13 @@ if (enable_java_templates) { _use_scanned_assets = !_ignore_assets && _scanned_files.assets != [] _has_resources = _scanned_files.resources != [] + _common_deps = [ ":$_unpack_target_name" ] + if (defined(invoker.deps)) { + _common_deps += invoker.deps + } + if (defined(invoker.public_deps)) { + _common_deps += invoker.public_deps + } assert(_ignore_aidl || _scanned_files.aidl == [], "android_aar_prebuilt() aidl not yet supported." + @@ -4350,7 +4472,7 @@ if (enable_java_templates) { "testonly", "strip_drawables", ]) - deps = [ ":$_unpack_target_name" ] + deps = _common_deps if (_should_process_manifest) { android_manifest_dep = ":$_unpack_target_name" android_manifest = "${_output_path}/AndroidManifest.xml" @@ -4384,6 +4506,7 @@ if (enable_java_templates) { _assets_target_name = "${target_name}__assets" android_assets(_assets_target_name) { forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + deps = [ ":$_unpack_target_name" ] renaming_sources = [] renaming_destinations = [] foreach(_asset_file, _scanned_files.assets) { @@ -4397,9 +4520,12 @@ if (enable_java_templates) { } } + _target_label = get_label_info(":$target_name", "label_no_toolchain") + # Create android_java_prebuilt target for classes.jar. if (_scanned_files.has_classes_jar) { _java_library_vars = [ + "alternative_android_sdk_dep", "bytecode_rewriter_target", "enable_bytecode_checks", "jar_excluded_patterns", @@ -4416,7 +4542,7 @@ if (enable_java_templates) { _subjar_targets += [ ":$_current_target" ] java_prebuilt(_current_target) { forward_variables_from(invoker, _java_library_vars) - deps = [ ":$_unpack_target_name" ] + deps = _common_deps if (!defined(requires_android)) { requires_android = true } @@ -4424,7 +4550,7 @@ if (enable_java_templates) { jar_path = "$_output_path/${_tuple[1]}" _base_output_name = get_path_info(jar_path, "name") output_name = "${invoker.target_name}-$_base_output_name" - public_target_label = invoker.target_name + public_target_label = _target_label } } @@ -4433,14 +4559,11 @@ if (enable_java_templates) { forward_variables_from(invoker, _java_library_vars) forward_variables_from(invoker, [ - "deps", "input_jars_paths", + "mergeable_android_manifests", "proguard_configs", ]) - if (!defined(deps)) { - deps = [] - } - deps += _subjar_targets + [ ":$_unpack_target_name" ] + deps = _common_deps + _subjar_targets if (defined(_res_target_name)) { deps += [ ":$_res_target_name" ] } @@ -4460,13 +4583,16 @@ if (enable_java_templates) { proguard_configs += [ "$_output_path/proguard.txt" ] } } - public_target_label = invoker.target_name + public_target_label = _target_label } } java_group(target_name) { forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) public_deps = [ ":$_unpack_target_name" ] + if (defined(invoker.public_deps)) { + public_deps += invoker.public_deps + } deps = [] if (defined(_jar_target_name)) { deps += [ ":$_jar_target_name" ] @@ -4513,6 +4639,7 @@ if (enable_java_templates) { # keystore_name: optional keystore name, used only when generating APKs. # keystore_password: optional keystore password, used only when # generating APKs. + # rotation_config: optional .textproto to enable key rotation. # # command_line_flags_file: Optional. If provided, named of the on-device # file that will be used to store command-line arguments. The default @@ -4533,10 +4660,6 @@ if (enable_java_templates) { # proguard_android_sdk_dep: Optional. android_system_java_prebuilt() target # used as a library jar for synchronized proguarding. # - # compress_shared_libraries: Optional. Whether to compress shared libraries - # such that they are extracted upon install. Libraries prefixed with - # "crazy." are never compressed. - # # system_image_locale_allowlist: List of locales that should be included # on system APKs generated from this bundle. # @@ -4586,19 +4709,11 @@ if (enable_java_templates) { _proguard_enabled = defined(invoker.proguard_enabled) && invoker.proguard_enabled - if (defined(invoker.version_code)) { - _version_code = invoker.version_code - } else { - _version_code = android_default_version_code - } - - if (android_override_version_code != "") { - _version_code = android_override_version_code + _min_sdk_version = default_min_sdk_version + if (defined(invoker.min_sdk_version)) { + _min_sdk_version = invoker.min_sdk_version } - # Prevent "unused variable". - not_needed([ "_version_code" ]) - _bundle_base_path = "$root_build_dir/apks" if (defined(invoker.bundle_base_path)) { _bundle_base_path = invoker.bundle_base_path @@ -4633,18 +4748,7 @@ if (enable_java_templates) { }, ] - _enable_multidex = - !defined(invoker.enable_multidex) || invoker.enable_multidex - - # Prevent "unused variable". - not_needed([ "_enable_multidex" ]) - if (_proguard_enabled) { - _uses_static_library_synchronized_proguard = - defined(invoker.static_library_synchronized_proguard) && - invoker.static_library_synchronized_proguard - - # TODO(crbug.com/1032609): Remove dexsplitter from Trichrome Proguard. _dex_target = "${_target_name}__dex" _proguard_mapping_path = "${_bundle_path}.mapping" } @@ -4751,9 +4855,9 @@ if (enable_java_templates) { _rebased_build_config = rebase_path(_build_config, root_build_dir) _build_config_target = "$_target_name$build_config_target_suffix" if (defined(invoker.proguard_android_sdk_dep)) { - proguard_android_sdk_dep_ = invoker.proguard_android_sdk_dep + _android_sdk_dep = invoker.proguard_android_sdk_dep } else { - proguard_android_sdk_dep_ = "//third_party/android_sdk:android_sdk_java" + _android_sdk_dep = default_android_sdk_dep } if (_proguard_enabled) { @@ -4767,10 +4871,11 @@ if (enable_java_templates) { write_build_config(_build_config_target) { type = "android_app_bundle" - possible_config_deps = _module_targets + [ proguard_android_sdk_dep_ ] + possible_config_deps = _module_targets + [ _android_sdk_dep ] build_config = _build_config proguard_enabled = _proguard_enabled module_build_configs = _module_build_configs + modules = _modules if (_proguard_enabled) { add_view_trace_events = _add_view_trace_events @@ -4778,70 +4883,104 @@ if (enable_java_templates) { } } + # Old name for variable, mark as not_needed while it is being renamed + # downstream. Remove after all references to baseline_profile_path have been + # changed. + not_needed(invoker, [ "baseline_profile_path" ]) + + _enable_art_profile_optimizations = + defined(invoker.art_profile_path) && _proguard_enabled + + if (_enable_art_profile_optimizations) { + _include_baseline_profile = enable_baseline_profiles + _enable_startup_profile = enable_startup_profiles + if (_include_baseline_profile) { + _obfuscated_art_profile = + "$target_out_dir/${target_name}.obfuscated.hrf" + } + } else { + not_needed(invoker, [ "art_profile_path" ]) + } + if (_proguard_enabled) { - # If this Bundle uses a static library, the static library APK will - # create the synchronized dex file path. - if (!_uses_static_library_synchronized_proguard) { - if (_add_view_trace_events) { - _trace_event_rewriter_target = - "//build/android/bytecode:trace_event_adder" - _rewritten_jar_target_name = "${target_name}__trace_event_rewritten" - _rewriter_path = root_build_dir + "/bin/helper/trace_event_adder" - _stamp = "${target_gen_dir}/${target_name}.trace_event_rewrite.stamp" - action_with_pydeps(_rewritten_jar_target_name) { - script = "//build/android/gyp/trace_event_bytecode_rewriter.py" - inputs = [ - _rewriter_path, - _build_config, - ] - outputs = [ _stamp ] - depfile = "$target_gen_dir/$_rewritten_jar_target_name.d" - args = [ - "--stamp", - rebase_path(_stamp, root_build_dir), - "--depfile", - rebase_path(depfile, root_build_dir), - "--script", - rebase_path(_rewriter_path, root_build_dir), - "--classpath", - "@FileArg($_rebased_build_config:deps_info:javac_full_classpath)", - "--classpath", - "@FileArg($_rebased_build_config:android:sdk_jars)", - "--input-jars", - "@FileArg($_rebased_build_config:deps_info:device_classpath)", - "--output-jars", - "@FileArg($_rebased_build_config:deps_info:trace_event_rewritten_device_classpath)", - ] - deps = [ - _trace_event_rewriter_target, - ":$_build_config_target", - ] + _module_java_targets - } + if (_add_view_trace_events) { + _trace_event_rewriter_target = + "//build/android/bytecode:trace_event_adder" + _rewritten_jar_target_name = "${target_name}__trace_event_rewritten" + _rewriter_path = root_build_dir + "/bin/helper/trace_event_adder" + _stamp = "${target_out_dir}/${target_name}.trace_event_rewrite.stamp" + action_with_pydeps(_rewritten_jar_target_name) { + script = "//build/android/gyp/trace_event_bytecode_rewriter.py" + inputs = [ + java_path_for_inputs, + _rewriter_path, + _build_config, + ] + outputs = [ _stamp ] + depfile = "$target_gen_dir/$_rewritten_jar_target_name.d" + args = [ + "--stamp", + rebase_path(_stamp, root_build_dir), + "--depfile", + rebase_path(depfile, root_build_dir), + "--script", + rebase_path(_rewriter_path, root_build_dir), + "--classpath", + "@FileArg($_rebased_build_config:deps_info:javac_full_classpath)", + "--classpath", + "@FileArg($_rebased_build_config:android:sdk_jars)", + "--input-jars", + "@FileArg($_rebased_build_config:deps_info:device_classpath)", + "--output-jars", + "@FileArg($_rebased_build_config:deps_info:trace_event_rewritten_device_classpath)", + ] + deps = [ + ":$_build_config_target", + _trace_event_rewriter_target, + ] + _module_java_targets } + } - dex(_dex_target) { - forward_variables_from(invoker, - [ - "expected_proguard_config", - "expected_proguard_config_base", - "min_sdk_version", - "proguard_enable_obfuscation", - ]) - if (defined(expected_proguard_config)) { - top_target_name = _target_name + dex(_dex_target) { + forward_variables_from(invoker, + [ + "custom_assertion_handler", + "expected_proguard_config", + "expected_proguard_config_base", + "proguard_enable_obfuscation", + "repackage_classes", + ]) + if (defined(expected_proguard_config)) { + top_target_name = _target_name + } + min_sdk_version = _min_sdk_version + add_view_trace_events = _add_view_trace_events + proguard_enabled = true + proguard_mapping_path = _proguard_mapping_path + build_config = _build_config + if (_enable_art_profile_optimizations) { + input_art_profile = invoker.art_profile_path + if (_include_baseline_profile) { + output_art_profile = _obfuscated_art_profile } - add_view_trace_events = _add_view_trace_events - enable_multidex = _enable_multidex - proguard_enabled = true - proguard_mapping_path = _proguard_mapping_path - proguard_sourcefile_suffix = "$android_channel-$_version_code" - build_config = _build_config + enable_startup_profile = _enable_startup_profile + } - deps = _module_java_targets + [ ":$_build_config_target" ] - if (_add_view_trace_events) { - deps += [ ":${_rewritten_jar_target_name}" ] - } - modules = _modules + deps = _module_java_targets + [ ":$_build_config_target" ] + if (_add_view_trace_events) { + deps += [ ":${_rewritten_jar_target_name}" ] + } + modules = _modules + + # Must not be set via write_build_config, because that will cause it + # to be picked up by test apks that use apk_under_test. + _assertions_implicitly_enabled = + defined(invoker.custom_assertion_handler) + if (!_assertions_implicitly_enabled && !enable_java_asserts && + (!defined(testonly) || !testonly) && + # Injected JaCoCo code causes -checkdiscards to fail. + !use_jacoco_coverage) { + proguard_configs = [ "//build/android/dcheck_is_off.flags" ] } } } @@ -4856,9 +4995,46 @@ if (enable_java_templates) { _module_build_config_target = _module.build_config_target if (!_proguard_enabled) { - _dex_target_for_module = "${_module_target}__final_dex" - } else { - _dex_target_for_module = ":$_dex_target" + _module_target_name = get_label_info(_module_target, "name") + _dex_target = "${_module_target_name}__final_dex" + _dex_path = "$target_out_dir/$_module_target_name/$_module_target_name.mergeddex.jar" + dex(_dex_target) { + forward_variables_from(invoker, [ "custom_assertion_handler" ]) + min_sdk_version = _min_sdk_version + output = _dex_path + build_config = _build_config + + # This will be a pure dex-merge. + input_dex_filearg = "@FileArg($_rebased_build_config:modules:${_module.name}:all_dex_files)" + enable_desugar = false + + deps = [ + ":$_build_config_target", + ":${_module_target_name}__java", + ] + } + } + _dex_target_for_module = ":$_dex_target" + + if (_enable_art_profile_optimizations && _include_baseline_profile) { + _module_target_name = get_label_info(_module_target, "name") + _binary_profile_target = + "${_module_target_name}__binary_baseline_profile" + _binary_baseline_profile_path = "$target_out_dir/$_module_target_name/$_module_target_name.baseline.prof" + _binary_baseline_profile_metadata_path = + _binary_baseline_profile_path + "m" + create_binary_profile(_binary_profile_target) { + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + binary_baseline_profile_path = _binary_baseline_profile_path + binary_baseline_profile_metadata_path = + _binary_baseline_profile_metadata_path + build_config = _module_build_config + input_profile_path = _obfuscated_art_profile + deps = [ + _dex_target_for_module, + _module_build_config_target, + ] + } } # Generate one module .zip file per bundle module. @@ -4867,19 +5043,22 @@ if (enable_java_templates) { # the internal module name inside the final bundle, in other words, # this file *must* be named ${_module.name}.zip _create_module_target = "${_target_name}__${_module.name}__create" - _module_zip_path = "$target_gen_dir/$target_name/${_module.name}.zip" + _module_zip_path = "$target_out_dir/$target_name/${_module.name}.zip" create_android_app_bundle_module(_create_module_target) { forward_variables_from(invoker, [ "is_multi_abi", - "min_sdk_version", "uncompress_dex", - "proguard_enabled", ]) module_name = _module.name + min_sdk_version = _min_sdk_version build_config = _module_build_config module_zip_path = _module_zip_path native_libraries_config = _native_libraries_config + if (!_proguard_enabled) { + dex_path = _dex_path + # dex_path is read from the build_config in the proguard case. + } if (module_name == "base" && defined(invoker.expected_libs_and_assets)) { @@ -4909,6 +5088,17 @@ if (enable_java_templates) { _secondary_abi_native_libraries_config deps += [ ":$_secondary_abi_native_libraries_config_target" ] } + + if (_enable_art_profile_optimizations && _include_baseline_profile) { + # extra_assets is a list of ["{src_path}:{dst_path}"] + extra_assets = [ + rebase_path(_binary_baseline_profile_path, root_build_dir) + + ":dexopt/baseline.prof", + rebase_path(_binary_baseline_profile_metadata_path, + root_build_dir) + ":dexopt/baseline.profm", + ] + deps += [ ":$_binary_profile_target" ] + } } _all_create_module_targets += [ @@ -4944,6 +5134,14 @@ if (enable_java_templates) { output_config = _unused_resources_config output_r_txt = _unused_resources_r_txt_out } + _unused_resources_final_path = "${_bundle_path}.unused_resources" + _copy_unused_resources_target = + "${_base_target_name}__copy_unused_resources" + copy(_copy_unused_resources_target) { + deps = [ ":$_unused_resources_target" ] + sources = [ _unused_resources_config ] + outputs = [ _unused_resources_final_path ] + } } _all_rebased_module_zip_paths = @@ -4972,8 +5170,10 @@ if (enable_java_templates) { _bundle_target_name = "${_target_name}__bundle" action_with_pydeps(_bundle_target_name) { script = "//build/android/gyp/create_app_bundle.py" - inputs = _all_module_zip_paths + _all_module_build_configs + - [ _BUNDLETOOL_JAR_PATH ] + inputs = _all_module_zip_paths + _all_module_build_configs + [ + _BUNDLETOOL_JAR_PATH, + java_path_for_inputs, + ] outputs = [ _bundle_path ] deps = _all_create_module_targets + [ ":$_build_config_target" ] args = [ @@ -4985,26 +5185,25 @@ if (enable_java_templates) { if (_split_dimensions != []) { args += [ "--split-dimensions=$_split_dimensions" ] } - if (defined(invoker.compress_shared_libraries) && - invoker.compress_shared_libraries) { - args += [ "--compress-shared-libraries" ] - } - _min_sdk_version = default_min_sdk_version - if (defined(invoker.min_sdk_version)) { - _min_sdk_version = invoker.min_sdk_version - } # Android P+ support loading from stored dex. if (_min_sdk_version < 27) { args += [ "--compress-dex" ] } + if (defined(invoker.rotation_config)) { + args += [ + "--rotation-config", + rebase_path(invoker.rotation_config, root_build_dir), + ] + } + if (treat_warnings_as_errors) { args += [ "--warnings-as-errors" ] } if (_enable_language_splits) { - args += [ "--base-allowlist-rtxt-path=@FileArg(" + "${_rebased_base_module_build_config}:deps_info:base_allowlist_rtxt_path)" ] + args += [ "--base-allowlist-rtxt-path=@FileArg($_rebased_base_module_build_config:deps_info:base_allowlist_rtxt_path)" ] if (_strip_unused_resources) { # Use the stripped out rtxt file to set resources that are pinned to # the default language split. @@ -5015,9 +5214,7 @@ if (enable_java_templates) { args += [ "--base-module-rtxt-path=$_rebased_unused_resources_r_txt_out" ] } else { - args += - [ "--base-module-rtxt-path=@FileArg(" + - "${_rebased_base_module_build_config}:deps_info:r_text_path)" ] + args += [ "--base-module-rtxt-path=@FileArg($_rebased_base_module_build_config:deps_info:r_text_path)" ] } } if (defined(invoker.validate_services) && invoker.validate_services) { @@ -5101,8 +5298,7 @@ if (enable_java_templates) { args = [ "--script-output-path", rebase_path(_bundle_wrapper_script_path, root_build_dir), - "--package-name=@FileArg(" + - "$_rebased_base_module_build_config:deps_info:package_name)", + "--package-name=@FileArg($_rebased_base_module_build_config:deps_info:package_name)", "--aapt2", rebase_path(_android_aapt2_path, root_build_dir), "--bundle-path", @@ -5162,8 +5358,8 @@ if (enable_java_templates) { forward_variables_from(invoker, [ "lint_baseline_file", + "lint_jar_path", "lint_suppressions_file", - "min_sdk_version", ]) build_config = _build_config build_config_dep = ":$_build_config_target" @@ -5173,12 +5369,15 @@ if (enable_java_templates) { } if (defined(invoker.lint_min_sdk_version)) { min_sdk_version = invoker.lint_min_sdk_version + } else { + min_sdk_version = _min_sdk_version } } } else { not_needed(invoker, [ "lint_baseline_file", + "lint_jar_path", "lint_min_sdk_version", "lint_suppressions_dep", "lint_suppressions_file", @@ -5205,6 +5404,7 @@ if (enable_java_templates) { action_with_pydeps("${_target_name}_apks") { script = "//build/android/gyp/create_app_bundle_apks.py" inputs = [ + java_path_for_inputs, _bundle_path, _BUNDLETOOL_JAR_PATH, ] @@ -5230,9 +5430,9 @@ if (enable_java_templates) { deps = [ ":$_bundle_target_name" ] metadata = { install_artifacts = [ _apks_path ] - } - if (defined(invoker.static_library_provider)) { - metadata.install_artifacts_barrier = [] + if (defined(invoker.static_library_provider)) { + install_artifacts_barrier = [] + } } # http://crbug.com/725224. Fix for bots running out of memory. @@ -5266,7 +5466,10 @@ if (enable_java_templates) { _name = get_path_info(invoker.bundle_path, "name") _output_path = "$_dir/$_name.minimal.apks" outputs = [ _output_path ] - inputs = [ invoker.bundle_path ] + inputs = [ + invoker.bundle_path, + java_path_for_inputs, + ] args = [ "--bundle", rebase_path(invoker.bundle_path, root_build_dir), diff --git a/build/config/android/sdk.gni b/build/config/android/sdk.gni index fb39315..45e3404 100644 --- a/build/config/android/sdk.gni +++ b/build/config/android/sdk.gni @@ -4,10 +4,10 @@ # The default SDK release used by public builds. Value may differ in # internal builds. -default_android_sdk_release = "t" +default_android_sdk_release = "u" # SDK releases against which public builds are supported. public_sdk_releases = [ - "t", "tprivacysandbox", + "u", ] diff --git a/build/config/android/test/resource_overlay/BUILD.gn b/build/config/android/test/resource_overlay/BUILD.gn index 0a5812c..3b79363 100644 --- a/build/config/android/test/resource_overlay/BUILD.gn +++ b/build/config/android/test/resource_overlay/BUILD.gn @@ -53,7 +53,7 @@ android_library("unit_device_javatests") { ":dependency_tagged_root_resources", ":root_tagged_root_resources", "//base:base_java_test_support", - "//third_party/android_support_test_runner:runner_java", + "//third_party/androidx:androidx_test_monitor_java", "//third_party/androidx:androidx_test_runner_java", "//third_party/junit", ] diff --git a/build/config/android/test/resource_overlay/java/src/org/chromium/build/resource_overlay/ResourceOverlayTest.java b/build/config/android/test/resource_overlay/java/src/org/chromium/build/resource_overlay/ResourceOverlayTest.java index 8da9938..d42450e 100644 --- a/build/config/android/test/resource_overlay/java/src/org/chromium/build/resource_overlay/ResourceOverlayTest.java +++ b/build/config/android/test/resource_overlay/java/src/org/chromium/build/resource_overlay/ResourceOverlayTest.java @@ -7,8 +7,8 @@ import static org.junit.Assert.assertEquals; import android.content.res.Resources; -import android.support.test.InstrumentationRegistry; +import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; import org.junit.Test; diff --git a/build/config/apple/BUILD.gn b/build/config/apple/BUILD.gn new file mode 100644 index 0000000..add2395 --- /dev/null +++ b/build/config/apple/BUILD.gn @@ -0,0 +1,17 @@ +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/config/apple/symbols.gni") + +# The ldflags referenced below are handled by +# //build/toolchain/apple/linker_driver.py. +# Remove this config if a target wishes to change the arguments passed to the +# strip command during linking. This config by default strips all symbols +# from a binary, but some targets may wish to specify an exports file to +# preserve specific symbols. +config("strip_all") { + if (enable_stripping) { + ldflags = [ "-Wcrl,strip,-x,-S" ] + } +} diff --git a/build/config/apple/symbols.gni b/build/config/apple/symbols.gni index ef6faf0..3b4dee4 100644 --- a/build/config/apple/symbols.gni +++ b/build/config/apple/symbols.gni @@ -17,7 +17,7 @@ declare_args() { enable_dsyms = is_official_build || using_sanitizer # Strip symbols from linked targets by default. If this is enabled, the - # //build/config/mac:strip_all config will be applied to all linked targets. + # //build/config/apple:strip_all config will be applied to all linked targets. # If custom stripping parameters are required, remove that config from a # linked target and apply custom -Wcrl,strip flags. See # //build/toolchain/apple/linker_driver.py for more information. diff --git a/build/config/arm.gni b/build/config/arm.gni index cc82ed5..5b404c1 100644 --- a/build/config/arm.gni +++ b/build/config/arm.gni @@ -41,6 +41,8 @@ if (current_cpu == "arm" || v8_current_cpu == "arm") { # For lacros build, we use ARM v8 by default. if (is_chromeos_lacros && arm_arch == "") { + # TODO(crbug.com/1467681) Enable i8mm and dotprod instructions for ffmpeg + # if ever we update to a version of arm that supports these instructions. arm_version = 8 arm_arch = "armv8-a+crc" } diff --git a/build/config/c++/BUILD.gn b/build/config/c++/BUILD.gn index c00dcef..abe15b4 100644 --- a/build/config/c++/BUILD.gn +++ b/build/config/c++/BUILD.gn @@ -94,7 +94,11 @@ config("runtime_library") { ] } } - if (use_custom_libcxx && enable_safe_libcxx) { - defines += [ "_LIBCPP_ENABLE_ASSERTIONS=1" ] - } + + # In a world without NaCl, the `runtime_library` config would also configure + # the `_LIBCPP_ENABLE_ASSERTIONS` define to enable hardening when using the + # custom hermetic libc++. However, this is currently added by the `compiler` + # config instead, since this hardening define should also be used by the NaCl + # saigo toolchain, which uses a prebuilt libc++ that is distinct from the + # custom hermetic libc++. } diff --git a/build/config/c++/c++.gni b/build/config/c++/c++.gni index a5436ee..00458df 100644 --- a/build/config/c++/c++.gni +++ b/build/config/c++/c++.gni @@ -2,6 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build/config/nacl/config.gni") import("//build/config/sanitizers/sanitizers.gni") import("//build_overrides/build.gni") @@ -53,12 +54,10 @@ declare_args() { libcxx_is_shared = use_custom_libcxx && is_component_build } -# TODO(https://crbug.com/1385662): This is temporarily guarded to make it easier -# to roll out this change. Once the various projects (ANGLE, v8, et cetera) -# rolling in Chrome's //build have updated, remove this entirely. -if (!defined(enable_safe_libcxx)) { - enable_safe_libcxx = true -} +# The saigo libc++ is distinct from the custom hermetic libc++. However, since +# the Chrome team controls the saigo toolchain, it is safe to unconditionally +# enable libc++ hardening there as well. +use_safe_libcxx = (use_custom_libcxx && enable_safe_libcxx) || is_nacl_saigo # libc++abi needs to be exported from executables to be picked up by shared # libraries on certain instrumented builds. @@ -82,8 +81,8 @@ if (is_android && export_libcxxabi_from_executables) { libcxx_is_shared = true } -libcxx_prefix = "//buildtools/third_party/libc++/trunk" -libcxxabi_prefix = "//buildtools/third_party/libc++abi/trunk" +libcxx_prefix = "//third_party/libc++/src" +libcxxabi_prefix = "//third_party/libc++abi/src" assert(!(is_ios && libcxx_is_shared), "Can't build libc++ as a shared library on iOS.") diff --git a/build/config/c++/libc++.natvis b/build/config/c++/libc++.natvis index 6378548..26580db 100644 --- a/build/config/c++/libc++.natvis +++ b/build/config/c++/libc++.natvis @@ -11,20 +11,20 @@ * if T is empty and non-final the 3rd param is 1 and it derives from T * else it has a member variable __value_ of type T --> - + {__value_} __value_ - + {*($T1*)this} *($T1*)this - + {{ size={$T2} }} @@ -50,7 +50,7 @@ and the inline data in the remaining storage.) --> - + - + {__cc} __cc - + {{ size={size()} }} diff --git a/build/config/chromecast/OWNERS b/build/config/chromecast/OWNERS index 253037d..8dd6352 100644 --- a/build/config/chromecast/OWNERS +++ b/build/config/chromecast/OWNERS @@ -1,3 +1,2 @@ mfoltz@chromium.org -rwkeane@google.com seantopping@chromium.org diff --git a/build/config/chromeos/BUILD.gn b/build/config/chromeos/BUILD.gn index 0606072..d6b383a 100644 --- a/build/config/chromeos/BUILD.gn +++ b/build/config/chromeos/BUILD.gn @@ -6,21 +6,6 @@ import("//build/config/chromeos/ui_mode.gni") assert(is_chromeos) -declare_args() { - # The location to a file used to dump symbols ordered by Call-Chain Clustering (C3) - # https://research.fb.com/wp-content/uploads/2017/01/cgo2017-hfsort-final1.pdf? - # to a file, used for generating orderfiles in Chrome OS - dump_call_chain_clustering_order = "" -} - -config("print_orderfile") { - if (dump_call_chain_clustering_order != "") { - _output_orderfile = - rebase_path(dump_call_chain_clustering_order, root_build_dir) - ldflags = [ "-Wl,--print-symbol-order=$_output_orderfile" ] - } -} - config("compiler_cpu_abi") { # Lacros currently uses the *-generic-crosstoolchain.gni files generated # by the simplechrome sdk in build/args/chromeos. These target triples diff --git a/build/config/chromeos/OWNERS b/build/config/chromeos/OWNERS new file mode 100644 index 0000000..4926482 --- /dev/null +++ b/build/config/chromeos/OWNERS @@ -0,0 +1 @@ +file://build/chromeos/OWNERS diff --git a/build/config/chromeos/rules.gni b/build/config/chromeos/rules.gni index 10af886..732afc3 100644 --- a/build/config/chromeos/rules.gni +++ b/build/config/chromeos/rules.gni @@ -10,7 +10,8 @@ import("//build/config/gclient_args.gni") import("//build/config/python.gni") import("//build/util/generate_wrapper.gni") -assert(is_chromeos && is_chromeos_device) +assert(is_chromeos) +assert(is_chromeos_device) # Determine the real paths for various items in the SDK, which may be used # in the 'generate_runner_script' template below. We do so outside the template @@ -100,13 +101,80 @@ if (cros_sdk_version != "") { } } -# Creates dependencies required by skylab testing. If passed the -# generated_script and test_exe this will generate the skylab runner script. -# If passed tast_attr_expr, tast_tests or tast_disabled_tests this will -# generate a filter file containing the expression for running tests in skylab. +template("generate_chromeos_sdk_deps") { + forward_variables_from(invoker, + [ + "deploy_chrome", + "is_tast", + ]) + if (!defined(deploy_chrome)) { + deploy_chrome = false + } + if (!defined(is_tast)) { + is_tast = false + } + + _sdk_data = [] + assert(cros_sdk_version != "", "cros sdk version is not defined") + foreach(b, _potential_test_boards) { + _cros_is_vm = false + foreach(b1, string_split(cros_boards_with_qemu_images, ":")) { + if (b == b1) { + _cros_is_vm = true + } + } + + # Determine the real paths for various items in the SDK, which may be used + # in the 'generate_runner_script' template below. + if (is_tast || _cros_is_vm || deploy_chrome) { + _symlink_targets = [] + foreach(m, _symlink_targets_map) { + if (b == m[0]) { + _symlink_targets = [] + _symlink_targets = m[1] + } + } + + if (is_tast) { + # Add tast sdk items. + _sdk_data += [ _symlink_targets[0] ] + } + if (deploy_chrome) { + # To deploy chrome to the VM, it needs to be stripped down to fit into + # the VM. This is done by using binutils in the toolchain. So add the + # toolchain to the data. + _sdk_data += [ + _symlink_targets[1], + _symlink_targets[2], + ] + } + if (_cros_is_vm) { + # Add vm sdk items. + _sdk_data += [ + _symlink_targets[3], + _symlink_targets[4], + _symlink_targets[5], + ] + } + } + } + group(target_name) { + data = _sdk_data + data += [ + # Needed for various SDK components used below. + "//build/cros_cache/chrome-sdk/misc/", + "//build/cros_cache/chrome-sdk/symlinks/", + "//chrome/VERSION", + + # The LKGM file controls what version of the VM image to download. Add it + # as data here so that changes to it will trigger analyze. + "//chromeos/CHROMEOS_LKGM", + ] + } +} + +# Creates tast filter files for skylab tast tests. # Args: -# generated_script: Name of the generated runner script created for test_exe -# test_exe: Name of the executable to run with the generated script. # tast_attr_expr: Tast expression to determine tests to run. This creates the # initial set of tests that can be further filtered.. # tast_tests: Names of tests to enable in tast. All other tests will be @@ -119,110 +187,76 @@ if (cros_sdk_version != "") { # those strings expanded into tests to disable (i.e. as && !"name:test"). # The name of those lists are then intended to be used to specify in # test_suites.pyl which collection to be used on specific test suites. -template("generate_skylab_deps") { +template("generate_skylab_tast_filter") { forward_variables_from(invoker, [ - "generated_script", - "test_exe", "tast_attr_expr", "tast_tests", "tast_disabled_tests", "tast_control", ]) - if (defined(test_exe) || defined(generated_script)) { - assert(defined(test_exe) && defined(generated_script), - "The test_exe and generated_script must both be defined when " + - "generating the skylab runner script") - action(target_name) { - script = "//build/chromeos/generate_skylab_deps.py" - outputs = [ generated_script ] - args = [ - "generate-runner", - "--test-exe", - test_exe, - "--output", - rebase_path(generated_script, root_build_dir), - ] - - deps = [ "//testing/buildbot/filters:chromeos_filters" ] - if (defined(invoker.deps)) { - deps += invoker.deps - } - data = [ generated_script ] - if (defined(invoker.data)) { - data += invoker.data - } - - data_deps = [ "//testing:test_scripts_shared" ] - if (defined(invoker.data_deps)) { - data_deps += invoker.data_deps - } - } + if (defined(tast_disabled_tests)) { + assert(defined(tast_attr_expr), + "tast_attr_expr must be used when specifying tast_disabled_tests.") } - if (defined(tast_attr_expr) || defined(tast_tests) || - defined(tast_disabled_tests)) { - if (defined(tast_disabled_tests)) { - assert(defined(tast_attr_expr), - "tast_attr_expr must be used when specifying tast_disabled_tests.") - } - _generated_filter = "$root_build_dir/bin/${target_name}.filter" - _skylab_args = [ - "generate-filter", - "--output", - rebase_path(_generated_filter), + _generated_filter = "$root_build_dir/bin/${target_name}.filter" + _skylab_args = [ + "generate-filter", + "--output", + rebase_path(_generated_filter), + ] + if (defined(tast_control)) { + _skylab_args += [ + "--tast-control", + rebase_path(tast_control), ] - if (defined(tast_control)) { - _skylab_args += [ - "--tast-control", - rebase_path(tast_control), - ] - } - if (defined(tast_attr_expr)) { + } + if (defined(tast_attr_expr)) { + _skylab_args += [ + "--tast-expr", + tast_attr_expr, + ] + } + if (defined(tast_tests)) { + foreach(_test, tast_tests) { _skylab_args += [ - "--tast-expr", - tast_attr_expr, + "--enabled-tests", + _test, ] } - if (defined(tast_tests)) { - foreach(_test, tast_tests) { + } + if (defined(tast_disabled_tests)) { + foreach(_test, tast_disabled_tests) { + _excluded_test_name_and_board = [] + _excluded_test_name_and_board = string_split(_test, "@") + [ "" ] + _excluded_test_name = _excluded_test_name_and_board[0] + _excluded_board = _excluded_test_name_and_board[1] + if (_excluded_board == "" || _excluded_board == cros_board) { _skylab_args += [ - "--enabled-tests", - _test, + "--disabled-tests", + _excluded_test_name, ] } } - if (defined(tast_disabled_tests)) { - foreach(_test, tast_disabled_tests) { - _excluded_test_name_and_board = [] - _excluded_test_name_and_board = string_split(_test, "@") + [ "" ] - _excluded_test_name = _excluded_test_name_and_board[0] - _excluded_board = _excluded_test_name_and_board[1] - if (_excluded_board == "" || _excluded_board == cros_board) { - _skylab_args += [ - "--disabled-tests", - _excluded_test_name, - ] - } - } + } + action(target_name) { + testonly = true + script = "//build/chromeos/generate_skylab_tast_filter.py" + if (defined(tast_control)) { + sources = [ tast_control ] } - action(target_name) { - script = "//build/chromeos/generate_skylab_deps.py" - if (defined(tast_control)) { - sources = [ tast_control ] - } - outputs = [ _generated_filter ] - args = _skylab_args - if (defined(invoker.data_deps)) { - data_deps = invoker.data_deps - } - data = [ _generated_filter ] - if (defined(invoker.data)) { - data += invoker.data - } - if (defined(invoker.deps)) { - deps = invoker.deps - } + outputs = [ _generated_filter ] + args = _skylab_args + if (defined(invoker.data_deps)) { + data_deps = invoker.data_deps + } + data = [ _generated_filter ] + if (defined(invoker.data)) { + data += invoker.data + } + if (defined(invoker.deps)) { + deps = invoker.deps } } } @@ -302,53 +336,14 @@ template("generate_runner_script") { # If we're in the cros chrome-sdk (and not the raw ebuild), the test will # need some additional runtime data located in the SDK cache. - _sdk_data = [] if (cros_sdk_version != "") { assert(defined(generated_script), "Must specify where to place generated test launcher script via " + "'generated_script'") - foreach(b, _potential_test_boards) { - _cros_is_vm = false - foreach(b1, string_split(cros_boards_with_qemu_images, ":")) { - if (b == b1) { - _cros_is_vm = true - } - } - - # Determine the real paths for various items in the SDK, which may be used - # in the 'generate_runner_script' template below. - if (is_tast || _cros_is_vm || deploy_chrome) { - _symlink_targets = [] - foreach(m, _symlink_targets_map) { - if (b == m[0]) { - _symlink_targets = [] - _symlink_targets = m[1] - } - } - - if (is_tast) { - # Add tast sdk items. - _sdk_data += [ _symlink_targets[0] ] - } - if (deploy_chrome) { - # To deploy chrome to the VM, it needs to be stripped down to fit into - # the VM. This is done by using binutils in the toolchain. So add the - # toolchain to the data. - _sdk_data += [ - _symlink_targets[1], - _symlink_targets[2], - ] - } - if (_cros_is_vm) { - # Add vm sdk items. - _sdk_data += [ - _symlink_targets[3], - _symlink_targets[4], - _symlink_targets[5], - ] - } - } + generate_chromeos_sdk_deps(target_name + "_cros_deps__helper") { + is_tast = is_tast + deploy_chrome = deploy_chrome } } @@ -369,6 +364,27 @@ template("generate_runner_script") { "--test-exe", test_exe, ] + + # This target is not a gtest unit test, but an integration test suite. + # Similar to interactive ui tests, it would start a full browser and + # then do testing. + # See more at //docs/testing/chromeos_integration. + if (test_exe == "chromeos_integration_tests") { + if (is_chromeos_ash) { + # For ash, it need to first stop the existing ash. + executable_args += [ "--stop-ui" ] + } + + # Lacros need to know the wayland socket file created by Ash. + # In this way, Lacros will be connected to the system Ash. + if (is_chromeos_lacros) { + executable_args += [ + "--env-var", + "XDG_RUNTIME_DIR", + "/run/chrome", + ] + } + } if (defined(runtime_deps_file)) { executable_args += [ "--runtime-deps-path", @@ -425,7 +441,7 @@ template("generate_runner_script") { executable_args += [ "--strip-chrome" ] } - if (!skip_generating_board_args) { + if (!skip_generating_board_args || is_skylab) { executable_args += [ "--board", cros_board, @@ -473,25 +489,17 @@ template("generate_runner_script") { "//build/android/pylib/results/", "//build/chromeos/", "//build/util/", - - # Needed for various SDK components used below. - "//build/cros_cache/chrome-sdk/misc/", - "//build/cros_cache/chrome-sdk/symlinks/", - "//chrome/VERSION", - - # The LKGM file controls what version of the VM image to download. Add it - # as data here so that changes to it will trigger analyze. - "//chromeos/CHROMEOS_LKGM", "//third_party/chromite/", ] - data += _sdk_data - if (defined(invoker.data)) { data += invoker.data } data_deps = [ "//testing:test_scripts_shared" ] + if (cros_sdk_version != "") { + data_deps += [ ":" + target_name + "_cros_deps__helper" ] + } if (defined(invoker.data_deps)) { data_deps += invoker.data_deps } @@ -501,10 +509,6 @@ template("generate_runner_script") { template("tast_test") { forward_variables_from(invoker, "*") - if (!defined(deploy_lacros_chrome)) { - deploy_lacros_chrome = false - } - # Default the expression to match any chrome-related test. if (!defined(tast_attr_expr) && !defined(tast_tests)) { # The following expression filters out all non-critical tests. See the link @@ -526,47 +530,72 @@ template("tast_test") { "Specify one of tast_tests or tast_attr_expr.") } - # Append any disabled tests to the expression. - if (defined(tast_disabled_tests)) { - assert(defined(tast_attr_expr), - "tast_attr_expr must be used when specifying tast_disabled_tests.") - foreach(_test, tast_disabled_tests) { - _excluded_test_name_and_board = [] - _excluded_test_name_and_board = string_split(_test, "@") + [ "" ] - _excluded_test_name = _excluded_test_name_and_board[0] - _excluded_board = _excluded_test_name_and_board[1] - if (_excluded_board == "" || _excluded_board == cros_board) { - tast_attr_expr += " && !\"name:${_excluded_test_name}\"" + _data_deps = [ + "//:chromiumos_preflight", # Builds the browser. + "//chromeos:cros_chrome_deploy", # Adds additional browser run-time deps. + + # Tools used to symbolize Chrome crash dumps. + # TODO(crbug.com/1156772): Remove these if/when all tests pick them up by + # default. + "//third_party/breakpad:dump_syms", + "//third_party/breakpad:minidump_dump", + "//third_party/breakpad:minidump_stackwalk", + ] + _data = [ "//components/crash/content/tools/generate_breakpad_symbols.py" ] + + if (is_skylab) { + generate_skylab_tast_filter(target_name) { + # chromite.deploy_chrome is needed for sideloading Chrome. + data = _data + [ "//third_party/chromite/" ] + data_deps = _data_deps + + # To disable a test on specific milestones, add it to the appropriate + # collection in the following file + tast_control = "//chromeos/tast_control.gni" + } + } else { + # Append any disabled tests to the expression. + if (defined(tast_disabled_tests)) { + assert(defined(tast_attr_expr), + "tast_attr_expr must be used when specifying tast_disabled_tests.") + foreach(_test, tast_disabled_tests) { + _excluded_test_name_and_board = [] + _excluded_test_name_and_board = string_split(_test, "@") + [ "" ] + _excluded_test_name = _excluded_test_name_and_board[0] + _excluded_board = _excluded_test_name_and_board[1] + if (_excluded_board == "" || _excluded_board == cros_board) { + tast_attr_expr += " && !\"name:${_excluded_test_name}\"" + } } } - } - if (defined(tast_attr_expr)) { - tast_attr_expr = "( " + tast_attr_expr + " )" - } - generate_runner_script(target_name) { - testonly = true - generated_script = "$root_build_dir/bin/run_${target_name}" - runtime_deps_file = "$root_out_dir/${target_name}.runtime_deps" - deploy_chrome = true - deploy_lacros = deploy_lacros_chrome - data_deps = [ - "//:chromiumos_preflight", # Builds the browser. - "//chromeos:cros_chrome_deploy", # Adds additional browser run-time deps. - - # Tools used to symbolize Chrome crash dumps. - # TODO(crbug.com/1156772): Remove these if/when all tests pick them up by - # default. - "//third_party/breakpad:dump_syms", - "//third_party/breakpad:minidump_dump", - "//third_party/breakpad:minidump_stackwalk", - ] + if (defined(tast_attr_expr)) { + tast_attr_expr = "( " + tast_attr_expr + " )" + } + generate_runner_script(target_name) { + testonly = true + generated_script = "$root_build_dir/bin/run_${target_name}" + runtime_deps_file = "$root_out_dir/${target_name}.runtime_deps" + deploy_chrome = true - data = [ "//components/crash/content/tools/generate_breakpad_symbols.py" ] - if (deploy_lacros_chrome) { - data += [ - # A script needed to launch Lacros in Lacros Tast tests. - "//build/lacros/mojo_connection_lacros_launcher.py", - ] + data_deps = _data_deps + if (!defined(deploy_lacros_chrome)) { + deploy_lacros_chrome = false + } + deploy_lacros = deploy_lacros_chrome + data = _data + if (deploy_lacros_chrome) { + data += [ + # A script needed to launch Lacros in Lacros Tast tests. + "//build/lacros/mojo_connection_lacros_launcher.py", + ] + + # By default, tast tests download a lacros-chrome from a gcs location and + # use it for testing. To support running lacros tast tests from Chromium CI, + # a Var is added to support pointing the tast tests to use a specified + # pre-deployed lacros-chrome. The location is decided by: + # https://source.chromium.org/chromium/chromium/src/+/main:third_party/chromite/scripts/deploy_chrome.py;l=80;drc=86f1234a4be8e9574442e076cdc835897f7bea61 + tast_vars = [ "lacros.DeployedBinary=/usr/local/lacros-chrome" ] + } } } } @@ -601,8 +630,8 @@ template("lacros_tast_tests") { ] if (is_skylab) { - generate_skylab_deps(target_name) { - data = _lacros_data + generate_skylab_tast_filter(target_name) { + data = _lacros_data + [ "//third_party/chromite/" ] data_deps = _lacros_data_deps # To disable a test on specific milestones, add it to the appropriate diff --git a/build/config/clang/BUILD.gn b/build/config/clang/BUILD.gn index 8fd6760..fe044e2 100644 --- a/build/config/clang/BUILD.gn +++ b/build/config/clang/BUILD.gn @@ -2,8 +2,13 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build/config/rust.gni") import("clang.gni") +if (is_ios) { + import("//build/config/ios/config.gni") # For `target_environment` +} + config("find_bad_constructs") { if (clang_use_chrome_plugins) { cflags = [] @@ -20,6 +25,11 @@ config("find_bad_constructs") { "-plugin-arg-find-bad-constructs", "-Xclang", "raw-ref-template-as-trivial-member", + + "-Xclang", + "-plugin-arg-find-bad-constructs", + "-Xclang", + "check-stack-allocated", ] if (is_linux || is_chromeos || is_android || is_fuchsia) { @@ -30,6 +40,30 @@ config("find_bad_constructs") { "check-ipc", ] } + + if (enable_check_raw_ptr_fields) { + cflags += [ + "-Xclang", + "-plugin-arg-find-bad-constructs", + "-Xclang", + "check-raw-ptr-fields", + + # TODO(mikt): Remove this once crbug.com/1449812 is resolved. + "-Xclang", + "-plugin-arg-find-bad-constructs", + "-Xclang", + "raw-ptr-exclude-path=um/winnt.h", + ] + } + + if (enable_check_raw_ref_fields) { + cflags += [ + "-Xclang", + "-plugin-arg-find-bad-constructs", + "-Xclang", + "check-raw-ref-fields", + ] + } } } @@ -53,3 +87,125 @@ group("llvm-symbolizer_data") { data = [ "$clang_base_path/bin/llvm-symbolizer" ] } } + +template("clang_lib") { + if (!defined(invoker.libname)) { + not_needed(invoker, "*") + config(target_name) { + } + } else { + config(target_name) { + _dir = "" + _libname = invoker.libname + _prefix = "lib" + _suffix = "" + _ext = "a" + if (is_win) { + _dir = "windows" + _prefix = "" + _ext = "lib" + if (current_cpu == "x64") { + _suffix = "-x86_64" + } else if (current_cpu == "x86") { + _suffix = "-i386" + } else if (current_cpu == "arm64") { + _suffix = "-aarch64" + } else { + assert(false) # Unhandled cpu type + } + } else if (is_apple) { + _dir = "darwin" + } else if (is_linux || is_chromeos) { + if (current_cpu == "x64") { + _dir = "x86_64-unknown-linux-gnu" + } else if (current_cpu == "x86") { + _dir = "i386-unknown-linux-gnu" + } else if (current_cpu == "arm") { + _dir = "armv7-unknown-linux-gnueabihf" + } else if (current_cpu == "arm64") { + _dir = "aarch64-unknown-linux-gnu" + } else { + assert(false) # Unhandled cpu type + } + } else if (is_fuchsia) { + if (current_cpu == "x64") { + _dir = "x86_64-unknown-fuchsia" + } else if (current_cpu == "arm64") { + _dir = "aarch64-unknown-fuchsia" + } else { + assert(false) # Unhandled cpu type + } + } else if (is_android) { + _dir = "linux" + if (current_cpu == "x64") { + _suffix = "-x86_64-android" + } else if (current_cpu == "x86") { + _suffix = "-i686-android" + } else if (current_cpu == "arm") { + _suffix = "-arm-android" + } else if (current_cpu == "arm64") { + _suffix = "-aarch64-android" + } else if (current_cpu == "riscv64") { + _suffix = "-riscv64-android" + } else { + assert(false) # Unhandled cpu type + } + } else { + assert(false) # Unhandled target platform + } + + _clang_lib_dir = "$clang_base_path/lib/clang/$clang_version/lib" + _lib_file = "${_prefix}clang_rt.${_libname}${_suffix}.${_ext}" + libs = [ "$_clang_lib_dir/$_dir/$_lib_file" ] + } + } +} + +# Adds a dependency on the Clang runtime library clang_rt.builtins. +clang_lib("compiler_builtins") { + if (!toolchain_has_rust) { + # Since there's no Rust in the toolchain, there's no concern that we'll use + # the Rust stdlib's intrinsics here. + # + # Don't define libname which makes this target do nothing. + } else if (is_mac) { + libname = "osx" + } else if (is_ios) { + if (target_environment == "simulator") { + libname = "iossim" + } else if (target_environment == "catalyst") { + libname = "osx" + } else { + libname = "ios" + } + } else { + libname = "builtins" + } +} + +# Adds a dependency on the Clang runtime library clang_rt.profile. +clang_lib("compiler_profile") { + if (!toolchain_has_rust) { + # This is only used when `toolchain_has_rust` to support Rust linking. + # + # Don't define libname which makes this target do nothing. + } else if (is_mac) { + libname = "profile_osx" + } else if (is_ios) { + if (target_environment == "simulator") { + libname = "profile_iossim" + } else if (target_environment == "catalyst") { + # We don't enable clang coverage on iOS device builds, and the library is + # not part of the Clang package tarball as a result. + # + # Don't define libname which makes this target do nothing. + } else { + # We don't enable clang coverage on iOS device builds, and the library is + # not part of the Clang package tarball as a result. + # + # Don't define libname which makes this target do nothing. + } + } else { + libname = "profile" + } +} diff --git a/build/config/clang/clang.gni b/build/config/clang/clang.gni index ac62a2f..d4351cd 100644 --- a/build/config/clang/clang.gni +++ b/build/config/clang/clang.gni @@ -2,6 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build/config/chromeos/ui_mode.gni") import("//build/toolchain/toolchain.gni") default_clang_base_path = "//third_party/llvm-build/Release+Asserts" @@ -16,5 +17,23 @@ declare_args() { is_clang && !is_nacl && current_os != "zos" && default_toolchain != "//build/toolchain/cros:target" + enable_check_raw_ptr_fields = + build_with_chromium && !is_official_build && + ((is_linux && !is_castos) || (is_android && !is_cast_android) || is_mac || + is_win || is_chromeos_lacros || is_chromeos_ash) + + # TODO(crbug.com/1446146): Merge with enable_check_raw_ptr_fields once both + # checks are activated on the same set of platforms. + enable_check_raw_ref_fields = + build_with_chromium && !is_official_build && is_linux && !is_castos + clang_base_path = default_clang_base_path + + # Specifies whether or not bitcode should be embedded during compilation. + # This is used for creating a MLGO corpus from Chromium in the non-ThinLTO case. + clang_embed_bitcode = false + + # Set to true to enable output of ThinLTO index and import files used for + # creating a Chromium MLGO corpus in the ThinLTO case. + lld_emit_indexes_and_imports = false } diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn index ff6aa0c..38ce559 100644 --- a/build/config/compiler/BUILD.gn +++ b/build/config/compiler/BUILD.gn @@ -17,6 +17,7 @@ import("//build/config/host_byteorder.gni") import("//build/config/rust.gni") import("//build/config/sanitizers/sanitizers.gni") import("//build/config/ui.gni") +import("//build/config/unwind.gni") import("//build/toolchain/cc_wrapper.gni") import("//build/toolchain/goma.gni") import("//build/toolchain/rbe.gni") @@ -154,10 +155,6 @@ declare_args() { # The gold linker by default has text section splitting enabled. use_text_section_splitting = false - # Turn off the --call-graph-profile-sort flag for lld by default. Enable - # selectively for targets where it's beneficial. - enable_call_graph_profile_sort = chrome_pgo_phase == 2 - # Enable DWARF v5. use_dwarf5 = false @@ -182,8 +179,15 @@ declare_args() { # a reproducer file to be saved. save_reproducers_on_lld_crash = false + # Enable ShadowCallStack for compiled binaries. SCS stores a pointer to a + # shadow call stack in register x18. Hence, x18 must not be used by the OS + # or libraries. We assume that to be the case for high end Android + # configurations. For more details see + # https://clang.llvm.org/docs/ShadowCallStack.html + enable_shadow_call_stack = false + + # PATCH(build-gn): Needed for building gn. # Allow projects that wish to stay on C++17 to override Chromium's default. - # TODO(crbug.com/1402249): evaluate removing this end of 2023 use_cxx17 = false } @@ -204,7 +208,7 @@ declare_args() { current_cpu == "x64")))) } -if (is_android || (is_chromeos_ash && is_chromeos_device)) { +if (is_android) { # Set the path to use orderfile for linking Chrome # Note that this is for using only one orderfile for linking # the Chrome binary/library. @@ -215,12 +219,19 @@ if (is_android || (is_chromeos_ash && is_chromeos_device)) { # Allow downstream tools to set orderfile path with # another variable. chrome_orderfile_path = default_chrome_orderfile - } else if (is_chromeos_ash && is_chromeos_device) { - chrome_orderfile_path = "//chromeos/profiles/chromeos.orderfile.txt" } } } +declare_args() { + # Turn off the --call-graph-profile-sort flag for lld by default. Enable + # selectively for targets where it's beneficial. + enable_call_graph_profile_sort = + chrome_pgo_phase == 2 || + (is_chromeos && + (clang_use_default_sample_profile || clang_sample_profile_path != "")) +} + assert(!(llvm_force_head_revision && use_goma), "can't use goma with trunk clang") assert(!(llvm_force_head_revision && use_remoteexec), @@ -268,9 +279,11 @@ config("compiler") { cflags_cc = [] cflags_objc = [] cflags_objcc = [] + rustflags = [] ldflags = [] defines = [] configs = [] + rustflags = [] # System-specific flags. If your compiler flags apply to one of the # categories here, add it to the associated file to keep this shared config @@ -330,28 +343,44 @@ config("compiler") { # -------------------------------- cflags += [ "-fno-strict-aliasing" ] # See http://crbug.com/32204 - # Stack protection. - if (is_apple) { - # The strong variant of the stack protector significantly increases - # binary size, so only enable it in debug mode. - if (is_debug) { - cflags += [ "-fstack-protector-strong" ] - } else { - cflags += [ "-fstack-protector" ] - } - } else if ((is_posix && !is_chromeos && !is_nacl) || is_fuchsia) { - # TODO(phajdan.jr): Use -fstack-protector-strong when our gcc supports it. - # See also https://crbug.com/533294 - if (current_os != "zos") { - cflags += [ "--param=ssp-buffer-size=4" ] - } + # Stack protection. ShadowCallStack and Stack protector address the same + # problems. Therefore, we only enable one or the other. Clang advertises SCS as + # a stronger alternative to StackProtector, so we give SCS precedence over SP. + if (enable_shadow_call_stack) { + # On Aarch64, SCS requires the x18 register to be unused because it will hold + # a pointer to the shadow stack. For Android we know that Clang doesn't use + # x18 by default. On other OSs adding "-ffixed-x18" might be required. + assert(is_android) + + scs_parameters = [ + "-fsanitize=shadow-call-stack", + "-fno-stack-protector", + ] + cflags += scs_parameters + ldflags += scs_parameters + } else { + if (is_apple) { + # The strong variant of the stack protector significantly increases + # binary size, so only enable it in debug mode. + if (is_debug) { + cflags += [ "-fstack-protector-strong" ] + } else { + cflags += [ "-fstack-protector" ] + } + } else if ((is_posix && !is_chromeos && !is_nacl) || is_fuchsia) { + # TODO(phajdan.jr): Use -fstack-protector-strong when our gcc supports it. + # See also https://crbug.com/533294 + if (current_os != "zos") { + cflags += [ "--param=ssp-buffer-size=4" ] + } - # The x86 toolchain currently has problems with stack-protector. - if (is_android && current_cpu == "x86") { - cflags += [ "-fno-stack-protector" ] - } else if (current_os != "aix") { - # Not available on aix. - cflags += [ "-fstack-protector" ] + # The x86 toolchain currently has problems with stack-protector. + if (is_android && current_cpu == "x86") { + cflags += [ "-fno-stack-protector" ] + } else if (current_os != "aix") { + # Not available on aix. + cflags += [ "-fstack-protector" ] + } } } @@ -428,9 +457,11 @@ config("compiler") { "-fno-unwind-tables", "-fno-asynchronous-unwind-tables", ] + rustflags += [ "-Cforce-unwind-tables=no" ] defines += [ "NO_UNWIND_TABLES" ] } else { cflags += [ "-funwind-tables" ] + rustflags += [ "-Cforce-unwind-tables=yes" ] } } } @@ -459,6 +490,7 @@ config("compiler") { asmflags += [ "-fPIC" ] cflags += [ "-fPIC" ] ldflags += [ "-fPIC" ] + rustflags += [ "-Crelocation-model=pic" ] if (!is_clang) { # Use pipes for communicating between sub-processes. Faster. @@ -583,11 +615,6 @@ config("compiler") { } } - # Rust compiler setup (for either clang or rustc). - if (enable_rust) { - defines += [ "RUST_ENABLED" ] - } - # C11/C++11 compiler flags setup. # --------------------------- if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) || @@ -624,7 +651,7 @@ config("compiler") { cflags_cc += [ "-fno-trigraphs" ] } } else if (is_clang) { - if (use_cxx17) { + if (defined(use_cxx17) && use_cxx17) { cflags_cc += [ "-std=${standard_prefix}++17" ] } else { cflags_cc += [ "-std=${standard_prefix}++20" ] @@ -636,7 +663,8 @@ config("compiler") { } } else if (is_win) { cflags_c += [ "/std:c11" ] - if (use_cxx17 || (!is_clang && defined(msvc_use_cxx17) && msvc_use_cxx17)) { + if ((defined(use_cxx17) && use_cxx17) || + (!is_clang && defined(msvc_use_cxx17) && msvc_use_cxx17)) { cflags_cc += [ "/std:c++17" ] } else { cflags_cc += [ "/std:c++20" ] @@ -649,7 +677,7 @@ config("compiler") { # clause, above. cflags_c += [ "-std=c11" ] - if (use_cxx17) { + if (defined(use_cxx17) && use_cxx17) { cflags_cc += [ "-std=c++17" ] } else { cflags_cc += [ "-std=c++20" ] @@ -700,6 +728,7 @@ config("compiler") { "/lldltocache:" + rebase_path("$root_out_dir/thinlto-cache", root_build_dir), "/lldltocachepolicy:$cache_policy", + "-mllvm:-disable-auto-upgrade-debug-info", ] } else { ldflags += [ "-flto=thin" ] @@ -714,14 +743,10 @@ config("compiler") { # of "all" which means number of hardware threads) is faster. ldflags += [ "-Wl,--thinlto-jobs=all" ] if (is_apple) { - _object_path_suffix = "" - if (is_ios) { - _object_path_suffix = ",persist" - } ldflags += [ "-Wl,-cache_path_lto," + rebase_path("$root_out_dir/thinlto-cache", root_build_dir), - "-Wcrl,object_path_lto" + _object_path_suffix, + "-Wcrl,object_path_lto", ] } else { ldflags += @@ -735,9 +760,8 @@ config("compiler") { # ARM was originally set lower than x86 to keep the size # bloat of ThinLTO to <10%, but that's potentially no longer true. # FIXME(inglorion): maybe tune these? - if (target_cpu == "arm" || target_cpu == "arm64") { - import_instr_limit = 20 - } + # TODO(b/271459198): Revert limit on amd64 to 30 when fixed. + import_instr_limit = 20 } else if (is_android) { # TODO(crbug.com/1308318): Investigate if we can get the > 6% perf win # of import_instr_limit 30 with a binary size hit smaller than ~2 MiB. @@ -745,12 +769,29 @@ config("compiler") { } ldflags += [ "-Wl,-mllvm,-import-instr-limit=$import_instr_limit" ] + + if (!is_chromeos) { + # TODO(https://crbug.com/972449): turn on for ChromeOS when that + # toolchain has this flag. + # We only use one version of LLVM within a build so there's no need to + # upgrade debug info, which can be expensive since it runs the verifier. + ldflags += [ "-Wl,-mllvm,-disable-auto-upgrade-debug-info" ] + } } # TODO(https://crbug.com/1211155): investigate why this isn't effective on # arm32. if (!is_android || current_cpu == "arm64") { cflags += [ "-fwhole-program-vtables" ] + + # whole-program-vtables implies -fsplit-lto-unit, and Rust needs to match + # behaviour. Rust needs to know the linker will be doing LTO in this case + # or it rejects the Zsplit-lto-unit flag. + rustflags += [ + "-Zsplit-lto-unit", + "-Clinker-plugin-lto=yes", + ] + if (!is_win) { ldflags += [ "-fwhole-program-vtables" ] } @@ -860,6 +901,24 @@ config("compiler") { } } + if (clang_embed_bitcode) { + assert(!use_thin_lto, + "clang_embed_bitcode is only supported in non-ThinLTO builds") + cflags += [ + "-Xclang", + "-fembed-bitcode=all", + ] + } + + if (lld_emit_indexes_and_imports) { + assert(use_thin_lto, + "lld_emit_indexes_and_imports is only supported with ThinLTO builds") + ldflags += [ + "-Wl,--save-temps=import", + "-Wl,--thinlto-emit-index-files", + ] + } + # Pass the same C/C++ flags to the objective C/C++ compiler. cflags_objc += cflags_c cflags_objcc += cflags_cc @@ -872,9 +931,38 @@ config("compiler") { asmflags += cflags_c } + if (is_chromeos_device && !is_nacl) { + # On ChromeOS devices, we want to ensure we're using Chrome's allocator + # symbols for all C++ new/delete operator overloads. PartitionAlloc + # and other local allocators should always take precedence over system or + # preloaded allocators. These are the mangled symbol names. + # See b/280115910 for details. + ldflags += [ + "-Wl,--export-dynamic-symbol=_ZdaPv,-u,_ZdaPv", + "-Wl,--export-dynamic-symbol=_ZdaPvRKSt9nothrow_t,-u,_ZdaPvRKSt9nothrow_t", + "-Wl,--export-dynamic-symbol=_ZdlPv,-u,_ZdlPv", + "-Wl,--export-dynamic-symbol=_ZdlPvm,-u,_ZdlPvm", + "-Wl,--export-dynamic-symbol=_ZdlPvRKSt9nothrow_t,-u,_ZdlPvRKSt9nothrow_t", + "-Wl,--export-dynamic-symbol=_Znam,-u,_Znam", + "-Wl,--export-dynamic-symbol=_ZnamRKSt9nothrow_t,-u,_ZnamRKSt9nothrow_t", + "-Wl,--export-dynamic-symbol=_Znwm,-u,_Znwm", + "-Wl,--export-dynamic-symbol=_ZnwmRKSt9nothrow_t,-u,_ZnwmRKSt9nothrow_t", + "-Wl,--export-dynamic-symbol=_ZdaPvmSt11align_val_t,-u,_ZdaPvmSt11align_val_t", + "-Wl,--export-dynamic-symbol=_ZdaPvSt11align_val_t,-u,_ZdaPvSt11align_val_t", + "-Wl,--export-dynamic-symbol=_ZdaPvSt11align_val_tRKSt9nothrow_t,-u,_ZdaPvSt11align_val_tRKSt9nothrow_t", + "-Wl,--export-dynamic-symbol=_ZdlPvmSt11align_val_t,-u,_ZdlPvmSt11align_val_t", + "-Wl,--export-dynamic-symbol=_ZdlPvSt11align_val_t,-u,_ZdlPvSt11align_val_t", + "-Wl,--export-dynamic-symbol=_ZdlPvSt11align_val_tRKSt9nothrow_t,-u,_ZdlPvSt11align_val_tRKSt9nothrow_t", + "-Wl,--export-dynamic-symbol=_ZnamSt11align_val_t,-u,_ZnamSt11align_val_t", + "-Wl,--export-dynamic-symbol=_ZnamSt11align_val_tRKSt9nothrow_t,-u,_ZnamSt11align_val_tRKSt9nothrow_t", + "-Wl,--export-dynamic-symbol=_ZnwmSt11align_val_t,-u,_ZnwmSt11align_val_t", + "-Wl,--export-dynamic-symbol=_ZnwmSt11align_val_tRKSt9nothrow_t,-u,_ZnwmSt11align_val_tRKSt9nothrow_t", + ] + } + # Rust compiler flags setup. # --------------------------- - rustflags = [ + rustflags += [ # Overflow checks are optional in Rust, but even if switched # off they do not cause undefined behavior (the overflowing # behavior is defined). Because containers are bounds-checked @@ -893,10 +981,6 @@ config("compiler") { # to compile dylibs on Android, such as for constructing unit test APKs. "-Cdefault-linker-libraries", - # Turn warnings into the "deny" lint level, which produce compiler errors. - # The equivalent of -Werror for clang/gcc. - "-Dwarnings", - # To make Rust .d files compatible with ninja "-Zdep-info-omit-d-target", @@ -908,34 +992,44 @@ config("compiler") { # directory from appearing in build outputs. "-Zremap-cwd-prefix=.", ] + + if (!is_win || force_rustc_color_output) { + # Colorize error output. The analogous flag is passed for clang. This must + # be platform-gated since rustc will unconditionally output ANSI escape + # sequences, ignoring the platform, when stderr is not a terminal. + rustflags += [ "--color=always" ] + } if (rust_abi_target != "") { rustflags += [ "--target=$rust_abi_target" ] } - if (!use_thin_lto || !use_chromium_rust_toolchain) { - # Don't include bitcode if it won't be used, or can't be used. When - # use_thin_lto is true, we will try to apply LTO to any objects that have - # the appropriate bitcode. But we have to use Chromium's toolchain in order - # to use LTO with rust code. Chromium's rustc will have an LLVM backend that - # matches the C++ clang compiler. + if (!use_thin_lto) { + # Don't include bitcode if it won't be used. rustflags += [ "-Cembed-bitcode=no" ] } if (is_official_build) { rustflags += [ "-Ccodegen-units=1" ] } -} + if (!rust_prebuilt_stdlib) { + # When building against the Chromium Rust stdlib (which we compile) always + # abort instead of unwinding when panic occurs. In official builds, panics + # abort immediately (this is configured in the stdlib) to keep binary size + # down. So we unconditionally match behaviour in unofficial too. + rustflags += [ + "-Cpanic=abort", + "-Zpanic_abort_tests", + ] + } -# Defers LTO optimization to the linker, for use when: -# * Having the C++ toolchain do the linking against Rust staticlibs, and it -# will be using LTO. -# * Having Rust toolchain invoke the linker, and you're linking Rust and C++ -# together, so this defers LTO to the linker. -# -# Otherwise, Rust does LTO during compilation. -# -# https://doc.rust-lang.org/rustc/linker-plugin-lto.html -config("rust_defer_lto_to_linker") { - if (!is_debug && use_thin_lto && is_a_target_toolchain) { - rustflags = [ "-Clinker-plugin-lto" ] + # Normally, this would be defined in the `runtime_library` config but NaCl + # saigo libc++ does not use the custom hermetic libc++. Unfortunately, there + # isn't really a better config to add this define for the define to + # consistently apply in both Chromium and non-Chromium code *and* non-NaCl + # and NaCl code. + # + # TODO(https://crbug.com/702997): Move this back to the `runtime_library` + # config when NaCl is removed. + if (use_safe_libcxx) { + defines += [ "_LIBCPP_ENABLE_ASSERTIONS=1" ] } } @@ -951,7 +1045,10 @@ config("thinlto_optimize_default") { ldflags = [ "-Wl,--lto-O" + lto_opt_level ] } - rustflags = [ "-Clto=thin" ] + # We always point Rust to a linker that performs LTO, so we don't want Rust + # to preemptively do so during compilation too or they conflict. But we do + # want Rust to generate LTO metadata in order for the linker to do its job. + rustflags = [ "-Clinker-plugin-lto=yes" ] } } @@ -977,7 +1074,10 @@ config("thinlto_optimize_max") { ldflags = [ "-Wl,--lto-O" + lto_opt_level ] } - rustflags = [ "-Clto=thin" ] + # We always point Rust to a linker that performs LTO, so we don't want Rust + # to preemptively do so during compilation too or they conflict. But we do + # want Rust to generate LTO metadata in order for the linker to do its job. + rustflags = [ "-Clinker-plugin-lto=yes" ] } } @@ -1282,7 +1382,7 @@ config("compiler_cpu_abi") { ldflags += [ "-m64" ] } } else if (current_cpu == "riscv64") { - if (is_clang) { + if (is_clang && !is_android) { cflags += [ "--target=riscv64-linux-gnu" ] ldflags += [ "--target=riscv64-linux-gnu" ] } @@ -1317,7 +1417,7 @@ config("compiler_codegen") { configs += [ "//build/config/nacl:compiler_codegen" ] } - if (current_cpu == "arm64" && !is_win) { + if (current_cpu == "arm64" && !is_win && is_clang) { # Disable outlining everywhere on arm64 except Win. For more information see # crbug.com/931297 for Android and crbug.com/1410297 for iOS. # TODO(crbug.com/1411363): Enable this on Windows if possible. @@ -1504,10 +1604,26 @@ config("runtime_library") { configs += [ "//build/config/c++:runtime_library" ] } + # Rust and C++ both provide intrinsics for LLVM to call for math operations. We + # want to use the C++ intrinsics, not the ones in the Rust compiler_builtins + # library. The Rust symbols are marked as weak, so that they can be replaced by + # the C++ symbols. This config ensures the C++ symbols exist and are strong in + # order to cause that replacement to occur by explicitly linking in clang's + # compiler-rt library. + if (is_clang && toolchain_has_rust) { + configs += [ "//build/config/clang:compiler_builtins" ] + } + # TODO(crbug.com/830987): Come up with a better name for is POSIX + Fuchsia # configuration. if (is_posix || is_fuchsia) { configs += [ "//build/config/posix:runtime_library" ] + + if (use_custom_libunwind) { + # Instead of using an unwind lib from the toolchain, + # buildtools/third_party/libunwind will be built and used directly. + ldflags = [ "--unwindlib=none" ] + } } # System-specific flags. If your compiler flags apply to one of the @@ -1658,6 +1774,16 @@ config("default_warnings") { cflags += [ "-Wno-nonportable-include-path" ] } + if (is_fuchsia && llvm_force_head_revision) { + cflags_cc += [ + # TODO(https://crbug.com/1474032): fix and reenable + "-Wno-deprecated-literal-operator", + + # TODO(https://crbug.com/1474434): fix and reenable + "-Wno-missing-field-initializers", + ] + } + cflags += [ "-Wenum-compare-conditional", @@ -1679,7 +1805,24 @@ config("default_warnings") { ] } } + + # Some builders, such as Cronet, use a different version of Clang than + # Chromium. This can cause minor errors when compiling Chromium changes. We + # want to avoid these errors. + if (use_lenient_compiler_flags) { + cflags += [ + "-Wno-error=unknown-warning-option", + "-Wno-error=unused-command-line-argument", + ] + } } + + # Rust warnings + + # Require `unsafe` blocks even in `unsafe` fns. This is intended to become + # an error by default eventually; see + # https://github.com/rust-lang/rust/issues/71668 + rustflags = [ "-Dunsafe_op_in_unsafe_fn" ] } # prevent_unsafe_narrowing ---------------------------------------------------- @@ -1751,6 +1894,15 @@ config("chromium_code") { cflags += [ "-Wextra" ] } + if (treat_warnings_as_errors) { + # Turn rustc warnings into the "deny" lint level, which produce compiler + # errors. The equivalent of -Werror for clang/gcc. + # + # Note we apply the actual lint flags in config("compiler"). All warnings + # are suppressed in third-party crates. + rustflags = [ "-Dwarnings" ] + } + # In Chromium code, we define __STDC_foo_MACROS in order to get the # C99 macros on Mac and Linux. defines = [ @@ -1765,17 +1917,24 @@ config("chromium_code") { # Non-chromium code is not guaranteed to compile cleanly with # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are # disabled, so only do that for Release build. - defines += [ "_FORTIFY_SOURCE=2" ] - } + fortify_level = "2" - if (is_mac) { - cflags_objc = [ "-Wobjc-missing-property-synthesis" ] - cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] + # ChromeOS supports a high-quality _FORTIFY_SOURCE=3 implementation + # with a few custom glibc patches. Use that if it's available. + if (is_chromeos_ash) { + fortify_level = "3" + } + defines += [ "_FORTIFY_SOURCE=" + fortify_level ] } - if (is_ios) { + if (is_apple) { cflags_objc = [ "-Wimplicit-retain-self" ] - cflags_objcc = cflags_objc + cflags_objcc = [ "-Wimplicit-retain-self" ] + } + + if (is_mac) { + cflags_objc += [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc += [ "-Wobjc-missing-property-synthesis" ] } } @@ -1788,13 +1947,11 @@ config("chromium_code") { # Warn on unnecessary extra semicolons outside of function definitions. "-Wextra-semi", - ] - # TODO(thakis): Enable this more often, https://crbug.com/346399 - # use_libfuzzer: https://crbug.com/1063180 - if ((!is_nacl || is_nacl_saigo) && !use_libfuzzer) { - cflags += [ "-Wunreachable-code-aggressive" ] - } + # Warn on unreachable code, including unreachable breaks and returns. + # See https://crbug.com/346399#c148 for suppression strategies. + "-Wunreachable-code-aggressive", + ] # Thread safety analysis is broken under nacl: https://crbug.com/982423. if (!is_nacl || is_nacl_saigo) { @@ -2334,10 +2491,12 @@ if (is_clang && is_a_target_toolchain) { if (is_android || is_castos) { _clang_sample_profile = "//chrome/android/profiles/afdo.prof" } else { - assert(chromeos_afdo_platform == "atom" || - chromeos_afdo_platform == "bigcore" || - chromeos_afdo_platform == "arm", - "Only atom, bigcore and arm are valid Chrome OS profiles.") + assert( + chromeos_afdo_platform == "atom" || + chromeos_afdo_platform == "bigcore" || + chromeos_afdo_platform == "arm" || + chromeos_afdo_platform == "arm-exp", + "Only 'atom', 'bigcore', 'arm' and 'arm-exp' are valid ChromeOS profiles.") _clang_sample_profile = "//chromeos/profiles/${chromeos_afdo_platform}.afdo.prof" } @@ -2375,6 +2534,14 @@ config("afdo") { if (use_profi) { cflags += [ "-fsample-profile-use-profi" ] } + + # crbug.com/1459429: ARM builds see failures due to -Wbackend-plugin. + # These seem to be false positives - the complaints are about functions + # marked with `__nodebug__` not having associated debuginfo. In the case + # where this was observed, the `__nodebug__` function was also marked + # `__always_inline__` and had no branches, so AFDO info is likely useless + # there. + cflags += [ "-Wno-backend-plugin" ] inputs = [ _clang_sample_profile ] } } else if (auto_profile_path != "" && is_a_target_toolchain) { @@ -2416,6 +2583,7 @@ config("win_pdbaltpath") { # Full symbols. config("symbols") { + rustflags = [] if (is_win) { if (is_clang) { cflags = [ @@ -2454,11 +2622,19 @@ config("symbols") { if (!is_nacl && current_os != "aix") { if (use_dwarf5) { cflags += [ "-gdwarf-5" ] - } else if (!is_apple) { + rustflags += [ "-Zdwarf-version=5" ] + } else { # Recent clang versions default to DWARF5 on Linux, and Android is about - # to switch. TODO: Adopt that in controlled way. - # Apple platforms still default to 4, so the flag is not needed there. - cflags += [ "-gdwarf-4" ] + # to switch. TODO: Adopt that in controlled way. For now, keep DWARF4. + # Apple platforms still default to 4 in clang, so they don't need the + # cflags. + if (!is_apple) { + cflags += [ "-gdwarf-4" ] + } + + # On Apple, rustc defaults to DWARF2 so it needs to be told how to + # match clang. + rustflags += [ "-Zdwarf-version=4" ] } } @@ -2550,17 +2726,25 @@ config("symbols") { ] } } - rustflags = [ "-g" ] + rustflags += [ "-g" ] } # Minimal symbols. # This config guarantees to hold symbol for stack trace which are shown to user # when crash happens in unittests running on buildbot. config("minimal_symbols") { + rustflags = [] if (is_win) { # Functions, files, and line tables only. cflags = [] + if (is_clang) { + cflags += [ + # Disable putting the compiler command line into the debug info to + # prevent some types of non-determinism. + "-gno-codeview-command-line", + ] + } if (is_clang && use_lld && use_ghash) { cflags += [ "-gcodeview-ghash" ] ldflags = [ "/DEBUG:GHASH" ] @@ -2584,15 +2768,18 @@ config("minimal_symbols") { # at least 10.11. # TODO(thakis): Remove this once mac_deployment_target is 10.11. cflags += [ "-gdwarf-4" ] + rustflags += [ "-Zdwarf-version=4" ] } else if (!use_dwarf5 && !is_nacl && current_os != "aix") { # On aix -gdwarf causes linker failures due to thread_local variables. # Recent clang versions default to DWARF5 on Linux, and Android is about # to switch. TODO: Adopt that in controlled way. cflags += [ "-gdwarf-4" ] + rustflags += [ "-Zdwarf-version=4" ] } if (use_dwarf5 && !is_nacl) { cflags += [ "-gdwarf-5" ] + rustflags += [ "-Zdwarf-version=5" ] } # The gcc-based nacl compilers don't support -fdebug-compilation-dir (see @@ -2624,7 +2811,7 @@ config("minimal_symbols") { asmflags = cflags } - rustflags = [ "-Cdebuginfo=1" ] + rustflags += [ "-Cdebuginfo=1" ] } # This configuration contains function names only. That is, the compiler is @@ -2668,33 +2855,35 @@ config("strip_debug") { } if (is_apple) { - # On Mac and iOS, this enables support for ARC (automatic ref-counting). - # See http://clang.llvm.org/docs/AutomaticReferenceCounting.html. + # On macOS and iOS, this enables support for ARC (automatic reference + # counting). See http://clang.llvm.org/docs/AutomaticReferenceCounting.html. + # + # -fobjc-arc enables ARC overall. + # + # ARC does not add exception handlers to pure Objective-C code, but does add + # them to Objective-C++ code with the rationale that C++ pervasively adds them + # in for exception safety. However, exceptions are banned in Chromium code for + # C++ and exceptions in Objective-C code are intended to be fatal, so + # -fno-objc-arc-exceptions is specified to disable these unwanted exception + # handlers. config("enable_arc") { - common_flags = [ "-fobjc-arc" ] + common_flags = [ + "-fobjc-arc", + "-fno-objc-arc-exceptions", + ] cflags_objc = common_flags cflags_objcc = common_flags } } -if (is_chromeos_ash && is_chromeos_device) { - # This config is intended to be a temporary to facilitate - # the transition to use orderfile in Chrome OS. Once orderfile - # use becomes a default in Chrome OS, this config should not - # be needed. - config("use_orderfile_for_hugepage") { - if (chrome_orderfile_path != "") { - defines = [ "CHROMEOS_ORDERFILE_USE" ] - } - } -} - -if (is_android || (is_chromeos_ash && is_chromeos_device)) { - # Use orderfile for linking Chrome on Android and Chrome OS. +if (is_android) { + # Use orderfile for linking Chrome on Android. # This config enables using an orderfile for linking in LLD. - # TODO: Consider using call graph sort instead, at least on Android. config("chrome_orderfile_config") { - if (chrome_orderfile_path != "" && !enable_call_graph_profile_sort) { + # Don't try to use an orderfile with call graph sorting, except on Android, + # where we care about memory used by code, so we still want to mandate + # ordering. + if (chrome_orderfile_path != "") { assert(use_lld) _rebased_orderfile = rebase_path(chrome_orderfile_path, root_build_dir) ldflags = [ diff --git a/build/config/compiler/compiler.gni b/build/config/compiler/compiler.gni index 25f7310..23fb1d3 100644 --- a/build/config/compiler/compiler.gni +++ b/build/config/compiler/compiler.gni @@ -246,7 +246,8 @@ declare_args() { current_cpu == "arm" || current_cpu == "arm64" || current_cpu == "mipsel" || current_cpu == "mips64el")) || (is_android && (current_cpu == "x86" || current_cpu == "x64" || - current_cpu == "arm" || current_cpu == "arm64"))) + current_cpu == "arm" || current_cpu == "arm64" || + current_cpu == "riscv64"))) } # Use relative paths for debug info. This is important to make the build diff --git a/build/config/compiler/pgo/BUILD.gn b/build/config/compiler/pgo/BUILD.gn index 900ae06..a78d37d 100644 --- a/build/config/compiler/pgo/BUILD.gn +++ b/build/config/compiler/pgo/BUILD.gn @@ -6,6 +6,7 @@ import("//build/config/chromeos/ui_mode.gni") import("//build/config/clang/clang.gni") import("//build/config/compiler/compiler.gni") import("//build/config/compiler/pgo/pgo.gni") +import("//build/config/features.gni") import("//build/toolchain/toolchain.gni") # Configuration that enables PGO instrumentation. @@ -40,7 +41,9 @@ config("pgo_optimization_flags") { inputs = [] if (is_win) { - if (target_cpu == "x64") { + if (target_cpu == "arm64") { + _pgo_target = "win-arm64" + } else if (target_cpu == "x64") { _pgo_target = "win64" } else { _pgo_target = "win32" @@ -51,11 +54,26 @@ config("pgo_optimization_flags") { } else { _pgo_target = "mac" } - } else if (is_linux || is_chromeos_lacros) { + } else if (is_linux) { _pgo_target = "linux" + } else if (is_chromeos_lacros) { + if (target_cpu == "arm") { + _pgo_target = "lacros-arm" + } else if (target_cpu == "arm64") { + _pgo_target = "lacros-arm64" + } else { + _pgo_target = "lacros64" + } } else if (is_android) { - # Temporarily use mac-arm profile until Android native PGO support works. - # TODO(crbug.com/1308749): fix this. + # Use |current_cpu| and not |target_cpu|; for Android we may built both. + if (current_cpu == "arm64") { + _pgo_target = "android-arm64" + } else { + _pgo_target = "android-arm32" + } + + # Continue to use mac-arm profile until Android native PGO autoroll works. + # TODO(crbug.com/1308749): Remove the following. _pgo_target = "mac-arm" } else if (is_fuchsia) { if (target_cpu == "arm64") { @@ -63,9 +81,17 @@ config("pgo_optimization_flags") { } else { _pgo_target = "mac" } + } else if (is_ios && use_blink) { + if (target_cpu == "arm64") { + _pgo_target = "mac-arm" + } else { + _pgo_target = "mac" + } } - if (_pgo_target == "win64") { + if (_pgo_target == "win-arm64") { + inputs = [ "//chrome/build/win-arm64.pgo.txt" ] + } else if (_pgo_target == "win64") { inputs = [ "//chrome/build/win64.pgo.txt" ] } else if (_pgo_target == "win32") { inputs = [ "//chrome/build/win32.pgo.txt" ] @@ -75,6 +101,16 @@ config("pgo_optimization_flags") { inputs = [ "//chrome/build/mac.pgo.txt" ] } else if (_pgo_target == "linux") { inputs = [ "//chrome/build/linux.pgo.txt" ] + } else if (_pgo_target == "lacros64") { + inputs = [ "//chrome/build/lacros64.pgo.txt" ] + } else if (_pgo_target == "lacros-arm") { + inputs = [ "//chrome/build/lacros-arm.pgo.txt" ] + } else if (_pgo_target == "lacros-arm64") { + inputs = [ "//chrome/build/lacros-arm64.pgo.txt" ] + } else if (_pgo_target == "android-arm32") { + inputs = [ "//chrome/build/android-arm32.pgo.txt" ] + } else if (_pgo_target == "android-arm64") { + inputs = [ "//chrome/build/android-arm64.pgo.txt" ] } if (_pgo_target != "" && pgo_data_path == "") { @@ -104,6 +140,21 @@ config("pgo_optimization_flags") { # See https://crbug.com/978401 "-Wno-backend-plugin", ] + + # Enable basic block layout based on the extended TSP problem. This aims to + # improve icache utilization and reduce the binary size. + if (use_thin_lto) { + if (is_win) { + ldflags = [ "-mllvm:-enable-ext-tsp-block-placement=1" ] + } else { + ldflags = [ "-Wl,-mllvm,-enable-ext-tsp-block-placement=1" ] + } + } else { + cflags += [ + "-mllvm", + "-enable-ext-tsp-block-placement=1", + ] + } } } diff --git a/build/config/compiler/pgo/pgo.gni b/build/config/compiler/pgo/pgo.gni index ce27137..a53d195 100644 --- a/build/config/compiler/pgo/pgo.gni +++ b/build/config/compiler/pgo/pgo.gni @@ -6,6 +6,8 @@ import("//build/config/chrome_build.gni") import("//build/config/chromecast_build.gni") import("//build/config/chromeos/ui_mode.gni") import("//build/config/dcheck_always_on.gni") +import("//build/config/features.gni") +import("//build/config/ios/config.gni") declare_args() { # Specify the current PGO phase. @@ -19,13 +21,13 @@ declare_args() { # bad compile times. chrome_pgo_phase = 0 if (!dcheck_always_on && is_official_build && - # TODO(crbug.com/1052397): Remove chromeos_is_browser_only once - # target_os switch for lacros-chrome is completed. # TODO(crbug.com/1336055): Update this now-outdated condition with regard # to chromecast and determine whether chromeos_is_browser_only is # obsolete. (is_high_end_android || is_win || is_mac || is_fuchsia || - (is_linux && !is_castos && !chromeos_is_browser_only))) { + (is_linux && !is_castos) || + (is_ios && use_blink && target_environment == "device") || + (is_chromeos_lacros && is_chromeos_device))) { chrome_pgo_phase = 2 } # PATCH(build-gn): No PGO. diff --git a/build/config/coverage/BUILD.gn b/build/config/coverage/BUILD.gn index 59941c3..6c3fca9 100644 --- a/build/config/coverage/BUILD.gn +++ b/build/config/coverage/BUILD.gn @@ -2,17 +2,28 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build/buildflag_header.gni") import("//build/config/coverage/coverage.gni") import("//build/config/rust.gni") config("default_coverage") { if (use_clang_coverage) { + configs = [] ldflags = [] + rustflags = [] if (!is_win) { + ldflags += [ "-fprofile-instr-generate" ] + } else { # Windows directly calls link.exe instead of the compiler driver when # linking, and embeds the path to the profile runtime library as # dependent library into each object file. - ldflags += [ "-fprofile-instr-generate" ] + # + # However... some build targets have no C++ object file (they have Rust + # instead), and thus the linker ends up not pulling in the profile + # library. So we add an edge to it directly. + if (toolchain_has_rust) { + configs += [ "//build/config/clang:compiler_profile" ] + } } cflags = [ @@ -32,7 +43,7 @@ config("default_coverage") { # tools that will be used to process the coverage output. This is because # the coverage file format is not stable. if (use_chromium_rust_toolchain) { - rustflags = [ "-Cinstrument-coverage" ] + rustflags += [ "-Cinstrument-coverage" ] } if (is_linux || is_chromeos) { @@ -41,3 +52,8 @@ config("default_coverage") { } } } + +buildflag_header("buildflags") { + header = "buildflags.h" + flags = [ "USE_JAVASCRIPT_COVERAGE=$use_javascript_coverage" ] +} diff --git a/build/config/coverage/coverage.gni b/build/config/coverage/coverage.gni index 2e5b7ab..cd4466c 100644 --- a/build/config/coverage/coverage.gni +++ b/build/config/coverage/coverage.gni @@ -34,6 +34,9 @@ declare_args() { # # NOTE that this arg will be non-op if use_clang_coverage is false. coverage_instrumentation_input_file = "" + + # Enables TypeScript/JavaScript code coverage. + use_javascript_coverage = false } assert(!use_clang_coverage || is_clang, diff --git a/build/config/cronet/config.gni b/build/config/cronet/config.gni index 1468ec1..0687f49 100644 --- a/build/config/cronet/config.gni +++ b/build/config/cronet/config.gni @@ -7,4 +7,11 @@ declare_args() { # components/cronet/tools/cr_cronet.py as cronet requires specific # gn args to build correctly). is_cronet_build = false + + # Control whether lenient compiler flags should be used. To ensure that minor + # failures in the AOSP Cronet builders do not block Chromium CLs, we will make + # these builders as lenient as possible by not treating some warnings as + # errors. Please refer to go/cronet-builders-with-mainline-clang-design for + # more information. + use_lenient_compiler_flags = false } diff --git a/build/config/fuchsia/BUILD.gn b/build/config/fuchsia/BUILD.gn index 1becaa4..90f23de 100644 --- a/build/config/fuchsia/BUILD.gn +++ b/build/config/fuchsia/BUILD.gn @@ -5,10 +5,10 @@ import("//build/config/chromecast_build.gni") import("//build/config/clang/clang.gni") import("//build/config/fuchsia/generate_runner_scripts.gni") -import("//third_party/fuchsia-sdk/sdk/build/config/config.gni") +import("//build/config/fuchsia/gn_configs.gni") assert(is_fuchsia) -assert(!is_posix) +assert(!is_posix, "Fuchsia is not POSIX.") config("compiler") { configs = [ "//third_party/fuchsia-sdk/sdk/build/config:compiler" ] @@ -30,8 +30,6 @@ group("deployment_resources") { "//build/fuchsia/", "//build/util/lib/", "//third_party/fuchsia-sdk/sdk/.build-id/", - "//third_party/fuchsia-sdk/sdk/bin/fpave.sh", - "//third_party/fuchsia-sdk/sdk/bin/fuchsia-common.sh", "//third_party/fuchsia-sdk/sdk/meta/manifest.json", "//third_party/fuchsia-sdk/sdk/tools/${test_host_cpu}/ffx", "//third_party/fuchsia-sdk/sdk/tools/${test_host_cpu}/ffx-meta.json", @@ -56,10 +54,6 @@ group("deployment_resources") { } if (test_isolate_uses_emulator) { - data += [ - "//third_party/fuchsia-sdk/sdk/bin/device_launcher.version", - "//third_party/fuchsia-sdk/sdk/tools/${test_host_cpu}/fvdl", - ] if (test_host_cpu == "x64") { data += [ "//third_party/fuchsia-sdk/sdk/tools/${test_host_cpu}/aemu_internal", @@ -99,3 +93,10 @@ group("asan_runtime_library") { ":sysroot_asan_runtime_libs", ] } + +# rustc gives the linker (clang++) "-pie" directives. clang++ complains on +# Fuchsia that these don't make any sense. On Fuchsia alone, for Rust-linked +# targets only, disable these warnings. +config("rustc_no_pie_warning") { + ldflags = [ "-Wno-unused-command-line-argument" ] +} diff --git a/build/config/fuchsia/OWNERS b/build/config/fuchsia/OWNERS index afdc62e..12f80c5 100644 --- a/build/config/fuchsia/OWNERS +++ b/build/config/fuchsia/OWNERS @@ -1,4 +1,4 @@ file://build/fuchsia/OWNERS -per-file *.cmx=set noparent -per-file *.cmx=file://build/fuchsia/SECURITY_OWNERS +chonggu@google.com +zijiehe@google.com diff --git a/build/config/fuchsia/build_cmx_from_fragment.py b/build/config/fuchsia/build_cmx_from_fragment.py deleted file mode 100644 index 190a260..0000000 --- a/build/config/fuchsia/build_cmx_from_fragment.py +++ /dev/null @@ -1,49 +0,0 @@ -# Copyright 2020 The Chromium Authors -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. -"""Creates a complete CMX (v1) component manifest, from a program name and - manifest fragment file.""" - -import argparse -import json -import sys - - -def BuildCmxFromFragment(output_file, fragment_file, program_binary): - """Reads a CMX fragment specifying e.g. features & sandbox, and a program - binary's filename, and writes out the full CMX. - - output_file: Build-relative filename at which to write the full CMX. - fragment_file: Build-relative filename of the CMX fragment to read from. - program_binary: Package-relative filename of the program binary. - """ - - with open(output_file, 'w') as component_manifest_file: - component_manifest = json.load(open(fragment_file, 'r')) - component_manifest.update({ - 'program': { - 'binary': program_binary - }, - }) - json.dump(component_manifest, component_manifest_file) - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument( - '--cmx-fragment', - required=True, - help='Path to the CMX fragment to read from') - parser.add_argument( - '--cmx', required=True, help='Path to write the complete CMX file to') - parser.add_argument( - '--program', - required=True, - help='Package-relative path to the program binary') - args = parser.parse_args() - - return BuildCmxFromFragment(args.cmx, args.cmx_fragment, args.program) - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/build/config/fuchsia/generate_runner_scripts.gni b/build/config/fuchsia/generate_runner_scripts.gni index 66974f5..747fb67 100644 --- a/build/config/fuchsia/generate_runner_scripts.gni +++ b/build/config/fuchsia/generate_runner_scripts.gni @@ -2,8 +2,6 @@ # 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/fuchsia_package_metadata.gni") @@ -11,11 +9,13 @@ import("//build/config/gclient_args.gni") import("//build/config/sysroot.gni") import("//build/util/generate_wrapper.gni") +assert(is_fuchsia) + 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 = "" + default_fuchsia_out_dir = "" # Sets the Fuchsia device node name which will be used by default by the # generated runner scripts. If not specficed, then no default node name will @@ -34,12 +34,6 @@ declare_args() { # This variable controls the browser included in the Telemetry based test # targets. fuchsia_browser_type = "web_engine_shell" - - # This variable controls which default version of the testing scripts to use. - # Individual tests can override this via setting |legacy_script_required| to - # true. - # TODO(crbug/1280705): remove when all tests are migrated to CFv2. - use_v2_script_default = true } # Generates a wrapper script under root_build_dir/bin that performs an @@ -68,10 +62,8 @@ declare_args() { # --package - the path to a .FAR package to install. # --package_name - the name of the package to use as an # entry point. -# include_fuchsia_build_dir: If true, adds -# |default_fuchsia_build_dir_for_installation| -# to executable_args (when set in GN args). -# use_v2_script: Whether to use the the ssh based v1 or ffx based v2 scripts. +# include_fuchsia_out_dir: If true, adds |default_fuchsia_out_dir| +# to executable_args (when set in GN args). template("fuchsia_run_script_with_packages") { if (defined(invoker.package_name)) { _pkg_shortname = invoker.package_name @@ -89,7 +81,7 @@ template("fuchsia_run_script_with_packages") { "executable", "executable_args", "data", - "include_fuchsia_build_dir", + "include_fuchsia_out_dir", "target", ]) @@ -121,25 +113,11 @@ template("fuchsia_run_script_with_packages") { } # Compute the list of full paths to package files, including dependencies. - if (!invoker.use_v2_script) { - _pkg_dir = "$root_out_dir/gen/" + get_label_info(invoker.package, "dir") + - "/" + _pkg_shortname - package_paths = - [ rebase_path("$_pkg_dir/${_pkg_shortname}.far", root_build_dir) ] - } if (defined(invoker.package_deps)) { foreach(package_dep, invoker.package_deps) { package_dep_target = package_dep[0] deps += [ package_dep_target ] data_deps += [ package_dep_target ] - if (!invoker.use_v2_script) { - package_dep_name = package_dep[1] - 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 ] - } } } @@ -148,22 +126,11 @@ template("fuchsia_run_script_with_packages") { executable_args = [] } - if (!invoker.use_v2_script) { - foreach(package_path, package_paths) { - executable_args += [ - "--package", - "@WrappedPath(${package_path})", - "--package-name", - _pkg_shortname, - ] - } - } - - if (defined(include_fuchsia_build_dir) && include_fuchsia_build_dir && - default_fuchsia_build_dir_for_installation != "") { + if (defined(include_fuchsia_out_dir) && include_fuchsia_out_dir && + default_fuchsia_out_dir != "") { executable_args += [ "--fuchsia-out-dir", - default_fuchsia_build_dir_for_installation, + default_fuchsia_out_dir, ] } } @@ -175,7 +142,10 @@ template("fuchsia_run_script_with_packages") { forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) executable = _generated_script_path wrapper_script = "$root_build_dir/${invoker.executable_wrapper}" - deps = [ ":${invoker._run_target}" ] + deps = [ + ":${invoker._install_target}", + ":${invoker._run_target}", + ] } } } @@ -188,11 +158,6 @@ template("fuchsia_package_installer") { } else { pkg_shortname = get_label_info(invoker.package, "name") } - if (!defined(invoker.use_v2_script)) { - use_v2_script = use_v2_script_default - } else { - use_v2_script = invoker.use_v2_script - } fuchsia_package_metadata(pkg_shortname) { forward_variables_from(invoker, TESTONLY_AND_VISIBILITY + [ @@ -205,18 +170,14 @@ template("fuchsia_package_installer") { "*", TESTONLY_AND_VISIBILITY + [ "executable_args" ]) forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) - if (use_v2_script) { - executable = rebase_path("//build/fuchsia/test/deploy_to_fuchsia.py") - executable_args = [ - "--out-dir", - "@WrappedPath(.)", - pkg_shortname, - ] - } else { - executable = rebase_path("//build/fuchsia/deploy_to_pkg_repo.py") - } + executable = rebase_path("//build/fuchsia/test/deploy_to_fuchsia.py") + executable_args = [ + "--out-dir", + "@WrappedPath(.)", + pkg_shortname, + ] output_name_format = "deploy_%package%" - include_fuchsia_build_dir = true + include_fuchsia_out_dir = true } } @@ -226,12 +187,6 @@ template("fuchsia_test_runner") { _run_target = "${target_name}__runner" _install_target = "${target_name}__installer" - if (!defined(invoker.use_v2_script)) { - use_v2_script = use_v2_script_default - } else { - use_v2_script = invoker.use_v2_script - } - fuchsia_run_script_with_packages(_run_target) { forward_variables_from(invoker, TESTONLY_AND_VISIBILITY + [ @@ -242,11 +197,7 @@ template("fuchsia_test_runner") { "package_deps", ]) - if (use_v2_script) { - _test_runner_py = "//build/fuchsia/test/run_test.py" - } else { - _test_runner_py = "//build/fuchsia/test_runner.py" - } + _test_runner_py = "//build/fuchsia/test/run_test.py" executable = rebase_path(_test_runner_py) @@ -262,31 +213,17 @@ template("fuchsia_test_runner") { "@WrappedPath(.)", ] - if (use_v2_script) { - executable_args += [ package_name ] - } else { - executable_args += [ - "--target-cpu", - target_cpu, - ] - } + executable_args += [ package_name ] if (defined(invoker.use_test_server) && invoker.use_test_server) { executable_args += [ "--enable-test-server" ] } if (default_fuchsia_device_node_name != "") { - if (use_v2_script) { - executable_args += [ - "--target-id", - default_fuchsia_device_node_name, - ] - } else { - executable_args += [ - "--node-name", - default_fuchsia_device_node_name, - ] - } + executable_args += [ + "--target-id", + default_fuchsia_device_node_name, + ] } # Declare the files that are needed for test execution on LUCI swarming @@ -294,11 +231,10 @@ template("fuchsia_test_runner") { if (!defined(data)) { data = [] } - data += [ _test_runner_py ] - - if (use_v2_script) { - data += [ "$root_gen_dir/package_metadata/${invoker.package_name}.meta" ] - } + data += [ + _test_runner_py, + "$root_gen_dir/package_metadata/${invoker.package_name}.meta", + ] # TODO(crbug.com/1256870): Remove this once all out-of-tree references # to "package_name_override" are migrated to "package_name". diff --git a/build/config/fuchsia/gn_configs.gni b/build/config/fuchsia/gn_configs.gni new file mode 100644 index 0000000..ca9e2c6 --- /dev/null +++ b/build/config/fuchsia/gn_configs.gni @@ -0,0 +1,57 @@ +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +assert(is_fuchsia) + +declare_args() { + # The target API level for this repository. Embedders should override this + # value to specify the API level the packages produced from this repository + # should be targeting, e.g. in their top-level //.gn file. A value of -1 + # means that no API level will be passed to the tools that consumes it. + fuchsia_target_api_level = 12 + + # Path to the fuchsia SDK. This is intended for use in other templates & + # rules to reference the contents of the fuchsia SDK. + fuchsia_sdk = "//third_party/fuchsia-sdk/sdk" + + # ID uniquely identifying the Fuchsia IDK build. This is exposed as a + # property so it can be used to locate images and packages on GCS and + # as a marker to indicate the "version" of the IDK. + # Defaults to the id found in the manifest.json file of the SDK. + fuchsia_sdk_id = "" +} + +declare_args() { + # The SDK manifest file. This is useful to include as a dependency + # for some targets in order to cause a rebuild when the version of the + # SDK is changed. + fuchsia_sdk_manifest_file = "$fuchsia_sdk/meta/manifest.json" + + # fuchsia_tool_dir is used to specify the directory in the SDK to locate + # tools for the host cpu architecture. If the host_cpu is not recognized, + # then tool dir defaults to x64. + fuchsia_tool_dir = "${fuchsia_sdk}/tools/x64" + if (host_cpu == "arm64") { + fuchsia_tool_dir = "${fuchsia_sdk}/tools/arm64" + } +} + +if (fuchsia_sdk_id == "") { + # Note: If we need to expose more than just the id in the future, + # we should consider exposing the entire json object for the metadata vs. + # adding a bunch of variables. + _meta = read_file(fuchsia_sdk_manifest_file, "json") + fuchsia_sdk_id = _meta.id +} + +declare_args() { + # Specify a readelf_exec path to use. If not specified, the host's system + # executable will be used. Passed to populate_build_id_dir.py and + # prepare_package_inputs.py via the --readelf-exec flag. + # Must be a GN path (not an absolute path) since it is adjusted with + # rebase_path(). + if (!defined(fuchsia_sdk_readelf_exec)) { + fuchsia_sdk_readelf_exec = "" + } +} diff --git a/build/config/fuchsia/packaged_content_embedder_excluded_dirs.gni b/build/config/fuchsia/packaged_content_embedder_excluded_dirs.gni index a08ed45..f179a66 100644 --- a/build/config/fuchsia/packaged_content_embedder_excluded_dirs.gni +++ b/build/config/fuchsia/packaged_content_embedder_excluded_dirs.gni @@ -4,6 +4,8 @@ import("//build/config/devtools.gni") +assert(is_fuchsia) + # List of transitively included directories that should be stripped from # released packages for size reasons. For use with the |excluded_dirs| variable # of fuchsia_package(). diff --git a/build/config/fuchsia/size_optimized_cast_receiver_args.gn b/build/config/fuchsia/size_optimized_cast_receiver_args.gn index b65d05d..3f92d8d 100644 --- a/build/config/fuchsia/size_optimized_cast_receiver_args.gn +++ b/build/config/fuchsia/size_optimized_cast_receiver_args.gn @@ -20,7 +20,9 @@ enable_printing = false enable_cast_receiver = true +cast_streaming_enable_remoting = true enable_dav1d_decoder = false +produce_v8_compile_hints = false # //chrome makes many assumptions that Extensions are enabled. # TODO(crbug.com/1363742): Fix theses assumptions or avoid building it. diff --git a/build/config/fuchsia/sizes.gni b/build/config/fuchsia/sizes.gni index 87e4fff..fc97676 100644 --- a/build/config/fuchsia/sizes.gni +++ b/build/config/fuchsia/sizes.gni @@ -2,6 +2,8 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +assert(is_fuchsia) + import("//build/util/generate_wrapper.gni") template("compute_fuchsia_package_sizes") { diff --git a/build/config/fuchsia/test/OWNERS b/build/config/fuchsia/test/OWNERS index 50a4d58..ac711c0 100644 --- a/build/config/fuchsia/test/OWNERS +++ b/build/config/fuchsia/test/OWNERS @@ -1,11 +1,7 @@ file://build/fuchsia/OWNERS -per-file *.test-cmx=set noparent -per-file *.test-cmx=ddorwin@chromium.org -per-file *.test-cmx=wez@chromium.org per-file *.test-cml=set noparent per-file *.test-cml=ddorwin@chromium.org per-file *.test-cml=wez@chromium.org # Please prefer the above when possible. -per-file *.test-cmx=file://build/fuchsia/SECURITY_OWNERS per-file *.test-cml=file://build/fuchsia/SECURITY_OWNERS diff --git a/build/config/fuchsia/test/README.md b/build/config/fuchsia/test/README.md index f2084d9..5a81a5f 100644 --- a/build/config/fuchsia/test/README.md +++ b/build/config/fuchsia/test/README.md @@ -9,36 +9,76 @@ below: ### General Purpose Fragments #### archivist.shard.test-cml -Runs an `archivist-without-attribution` with custom protocol routing for tests +Runs an `archivist-for-embedding` with custom protocol routing for tests that want to intercept events written to a `LogSink` by a component. #### chromium_test_facet.shard.test-cml -Runs CFv2 tests in the "chromium" test realm. This is generally required for all -Chromium tests that must interact with true system services. +Runs tests in the `chromium` test realm, which is mostly hermetic but has +access to specific system services that cannot (currently) be faked. For more +information, see https://fxbug.dev/91934. This is generally required for all +Chromium tests not using the +[`chromium_system_test_facet`](#chromium_system_test_facetshardtest-cml). #### fonts.shard.test-cml -For tests that test fonts by providing `fuchsia.fonts.Provider`. This shard -runs an isolated font provider, but serves the fonts present on the system. +For tests that need `fuchsia.fonts.Provider` to provide a basic set of fonts. +This shard runs an isolated font provider with fonts bundled into the fonts +package. #### test_fonts.shard.test-cml -For tests that use the fonts in `//third_party/test_fonts` by way of -`//skia:test_fonts_cfv2`. +For tests that need `fuchsia.fonts.Provider` to provide a specific set of fonts +(beyond that provided by `fonts.shard.test-cml`). This shard requires fonts to +be provided as a directory. The directory must be named `config-data`, must +contain the file named `all_font_manifest.json`, and all the font files named +in it. For details see the [font manifest][fm] in Fuchsia documentation. + +[fm]: https://fuchsia.dev/fuchsia-src/development/internationalization/fonts/build?hl=en#:font_collection-outputs + +The user of this shard must provide a directory `/pkg/test_fonts`, which must +contain all the files described above. + +Within Chromium, these fonts are usually provided via the target +`//skia:test_fonts`. #### mark_vmo_executable.shard.test-cml Required by tests that execute JavaScript. Should only be required in a small number of tests. #### minimum.shard.test-cml -Capabilities required by anything that uses `//base/test`, used as the base -fragment for all test suites. +Capabilities required by anything that uses `//base/test` when running in the +(default) `chromium` test realm. It is the default base fragment for most +`test()` Components. -`config-data` is included in the features list so that the platform can offer -ICU timezone data to these tests when they are being run. A more general -approach is discussed in https://fxbug.dev/85845. +The system-wide `config-data` directory capability is routed to tests running in +the realm so that individual tests may route subdirectories as needed. +TODO(crbug.com/1360077): Remove this after migrating to the new mechanism. #### logger.shard.test-cml For tests that test logging functionality by providing `fuchsia.logger.Log`. +#### sysmem.shard.test-cml +For tests that depend on the sysmem service (e.g. to allocate image buffers to +share with Vulkan and Scenic). + +#### system_test_minimum.shard.test-cml +Capabilities required by anything that uses `//base/test` when running as a +system test in the `chromium-system` test realm. It is the base fragment for +`test()` Components that use the +[`chromium_system_test_facet`](#chromium_system_test_facetshardtest-cml). + +Most tests use the [`minimum`](#minimumshardtest-cml) shard. + +#### chromium_system_test_facet.shard.test-cml +Runs tests in the `chromium-system` test realm. This is required for Chromium +tests that are intended to run against the actual system and its real system +services. This is required for, for example, performance tests intended to +measure system performance. Another overlapping use case is tests that need to +be run in environments without access to the packages containing fake +implementations of required protocols that other tests use. +(https://crbug.com/1408597 should make that use case obsolete.) + +Most tests should use the +[`chromium_test_facet`](#chromium_test_facetshardtest-cml). + #### test_ui_stack.shard.test-cml For tests that need an isolated UI subsystem, that supports the Flatland API set. This allows tests to e.g. run with view-focus unaffected by any @@ -82,6 +122,3 @@ Most services are required per the FIDL documentation. Contains services that need to be present when creating a `fuchsia.web.Context`. Note that the `fuchsia.scheduler.ProfileProvider` service is only used in tests that encounter memory pressure code. - -#### web_instance_host.shard.test-cml -Contains services that need to be present to use `WebInstanceHost`. diff --git a/build/config/fuchsia/test/archivist.shard.test-cml b/build/config/fuchsia/test/archivist.shard.test-cml index b85162f..1e014a0 100644 --- a/build/config/fuchsia/test/archivist.shard.test-cml +++ b/build/config/fuchsia/test/archivist.shard.test-cml @@ -5,7 +5,7 @@ children: [ { name: "isolated_archivist", - url: "fuchsia-pkg://fuchsia.com/archivist-without-attribution#meta/archivist-without-attribution.cm", + url: "fuchsia-pkg://fuchsia.com/archivist-for-embedding#meta/archivist-for-embedding.cm", }, ], use: [ @@ -20,9 +20,24 @@ from: "#isolated_archivist", }, ], + offer: [ + { + event_stream: [ + "capability_requested", + "directory_ready", + ], + from: "parent", + to: "#isolated_archivist", + }, + { + protocol: "fuchsia.logger.LogSink", + from: "parent", + to: "#isolated_archivist", + }, + ], facets: { "fuchsia.test": { - "deprecated-allowed-packages": [ "archivist-without-attribution" ], + "deprecated-allowed-packages": [ "archivist-for-embedding" ], }, }, } diff --git a/build/config/fuchsia/test/asan_options.shard.test-cml b/build/config/fuchsia/test/asan_options.shard.test-cml new file mode 100644 index 0000000..5866d79 --- /dev/null +++ b/build/config/fuchsia/test/asan_options.shard.test-cml @@ -0,0 +1,12 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +{ + program: { + // TODO(crbug.com/1465997): Remove the use of ASAN_OPTIONS once media does + // not load the shared rust library separately. + environ: [ + "ASAN_OPTIONS=detect_odr_violation=0", + ] + } +} diff --git a/build/config/fuchsia/test/chromium_system_test_facet.shard.test-cml b/build/config/fuchsia/test/chromium_system_test_facet.shard.test-cml new file mode 100644 index 0000000..cdf9ca7 --- /dev/null +++ b/build/config/fuchsia/test/chromium_system_test_facet.shard.test-cml @@ -0,0 +1,8 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +{ + facets: { + "fuchsia.test": { type: "chromium-system" }, + }, +} diff --git a/build/config/fuchsia/test/context_provider.shard.test-cml b/build/config/fuchsia/test/context_provider.shard.test-cml index ddd96e2..e5db2f1 100644 --- a/build/config/fuchsia/test/context_provider.shard.test-cml +++ b/build/config/fuchsia/test/context_provider.shard.test-cml @@ -22,8 +22,6 @@ protocol: [ "fuchsia.feedback.ComponentDataRegister", "fuchsia.feedback.CrashReportingProductRegister", - "fuchsia.sys.Environment", - "fuchsia.sys.Loader", ], from: "parent", to: "#context_provider", diff --git a/build/config/fuchsia/test/fonts.shard.test-cml b/build/config/fuchsia/test/fonts.shard.test-cml index 0ae7800..5eebf89 100644 --- a/build/config/fuchsia/test/fonts.shard.test-cml +++ b/build/config/fuchsia/test/fonts.shard.test-cml @@ -5,31 +5,30 @@ children: [ { name: "isolated_font_provider", - url: "fuchsia-pkg://fuchsia.com/fonts#meta/fonts.cm", + url: "fuchsia-pkg://fuchsia.com/fonts_hermetic_for_test#meta/font_provider_hermetic_for_test.cm", }, ], - offer: [ + use: [ { - directory: "config-data", - subdir: "fonts", - from: "parent", - to: "#isolated_font_provider", + protocol: "fuchsia.fonts.Provider", + from: "#isolated_font_provider", }, + ], + offer: [ { - protocol: "fuchsia.logger.LogSink", + protocol: [ + "fuchsia.logger.LogSink", + "fuchsia.tracing.provider.Registry", + ], from: "parent", to: "#isolated_font_provider", }, ], - use: [ - { - protocol: "fuchsia.fonts.Provider", - from: "#isolated_font_provider", - }, - ], facets: { "fuchsia.test": { - "deprecated-allowed-packages": [ "fonts" ], + // TODO(crbug.com/1408597): Remove when the isolated font provider + // component is subpackaged. + "deprecated-allowed-packages": [ "fonts_hermetic_for_test" ], }, }, } diff --git a/build/config/fuchsia/test/gfx_test_ui_stack.shard.test-cml b/build/config/fuchsia/test/gfx_test_ui_stack.shard.test-cml index 5b0d712..2e51f03 100644 --- a/build/config/fuchsia/test/gfx_test_ui_stack.shard.test-cml +++ b/build/config/fuchsia/test/gfx_test_ui_stack.shard.test-cml @@ -3,9 +3,12 @@ // found in the LICENSE file. // Used in tests which are hard-coded for the Scenic/GFX API-set. -// Use test_ui_stack.shard.test-cml when tetsing for Flatland, or when the +// Use test_ui_stack.shard.test-cml when testing for Flatland, or when the // choice of API-set is not important. { + include: [ + "//build/config/fuchsia/test/sysmem.shard.test-cml", + ], children: [ { name: "test_ui_stack", diff --git a/build/config/fuchsia/test/minimum.shard.test-cml b/build/config/fuchsia/test/minimum.shard.test-cml index e0e36d7..17b4927 100644 --- a/build/config/fuchsia/test/minimum.shard.test-cml +++ b/build/config/fuchsia/test/minimum.shard.test-cml @@ -9,7 +9,7 @@ children: [ { name: "build-info-service", - url: "fuchsia-pkg://fuchsia.com/build-info-service#meta/build-info.cm", + url: "fuchsia-pkg://fuchsia.com/fake-build-info#meta/fake_build_info.cm", }, { name: "intl_property_manager", @@ -17,15 +17,10 @@ }, ], offer: [ - { - directory: "build-info", - from: "parent", - to: "#build-info-service", - }, { protocol: "fuchsia.logger.LogSink", from: "parent", - to: [ "#build-info-service", "#intl_property_manager" ], + to: [ "#intl_property_manager" ], } ], use: [ @@ -40,7 +35,6 @@ }, { storage: "custom_artifacts", - rights: [ "rw*" ], path: "/custom_artifacts", }, { @@ -64,7 +58,6 @@ "fuchsia.hwinfo.Product", "fuchsia.media.ProfileProvider", "fuchsia.process.Launcher", - "fuchsia.sys.Loader", ], }, { @@ -77,7 +70,7 @@ facets: { "fuchsia.test": { "deprecated-allowed-packages": [ - "build-info-service", + "fake-build-info", "intl_property_manager", ], }, diff --git a/build/config/fuchsia/test/platform_video_codecs.shard.test-cml b/build/config/fuchsia/test/platform_video_codecs.shard.test-cml index 4820ecf..13b5a1b 100644 --- a/build/config/fuchsia/test/platform_video_codecs.shard.test-cml +++ b/build/config/fuchsia/test/platform_video_codecs.shard.test-cml @@ -2,6 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. { + include: [ + "//build/config/fuchsia/test/sysmem.shard.test-cml", + ], children: [ { // Run an isolated instance of codec_factory so that tests can run on diff --git a/build/config/fuchsia/test/cfv1_launcher.shard.test-cml b/build/config/fuchsia/test/sysmem.shard.test-cml similarity index 79% rename from build/config/fuchsia/test/cfv1_launcher.shard.test-cml rename to build/config/fuchsia/test/sysmem.shard.test-cml index 1944730..8bebd99 100644 --- a/build/config/fuchsia/test/cfv1_launcher.shard.test-cml +++ b/build/config/fuchsia/test/sysmem.shard.test-cml @@ -4,7 +4,7 @@ { use: [ { - protocol: "fuchsia.sys.Launcher", + protocol: "fuchsia.sysmem.Allocator", }, ], } diff --git a/build/config/fuchsia/test/system_test_minimum.shard.test-cml b/build/config/fuchsia/test/system_test_minimum.shard.test-cml new file mode 100644 index 0000000..6efde20 --- /dev/null +++ b/build/config/fuchsia/test/system_test_minimum.shard.test-cml @@ -0,0 +1,46 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +{ + include: [ + "syslog/client.shard.cml", + ], + use: [ + { + directory: "config-data", + rights: [ "r*" ], + path: "/config/data", + }, + { + storage: "cache", + path: "/cache", + }, + { + storage: "custom_artifacts", + path: "/custom_artifacts", + }, + { + storage: "data", + path: "/data", + }, + { + storage: "tmp", + path: "/tmp", + }, + { + protocol: [ + "fuchsia.buildinfo.Provider", + "fuchsia.hwinfo.Product", + "fuchsia.intl.PropertyProvider", + "fuchsia.media.ProfileProvider", + "fuchsia.process.Launcher", + ], + }, + { + protocol: [ + "fuchsia.tracing.perfetto.ProducerConnector", + ], + availability: "optional", + }, + ], +} diff --git a/build/config/fuchsia/test/test_fonts.shard.test-cml b/build/config/fuchsia/test/test_fonts.shard.test-cml index 6610e31..5d26574 100644 --- a/build/config/fuchsia/test/test_fonts.shard.test-cml +++ b/build/config/fuchsia/test/test_fonts.shard.test-cml @@ -5,7 +5,7 @@ children: [ { name: "test_fonts", - url: "fuchsia-pkg://fuchsia.com/fonts#meta/fonts.cm", + url: "fuchsia-pkg://fuchsia.com/fonts_configurable_for_test#meta/fonts_configurable_for_test.cm", }, ], offer: [ @@ -31,7 +31,9 @@ ], facets: { "fuchsia.test": { - "deprecated-allowed-packages": [ "fonts" ], + // TODO(crbug.com/1408597): Remove when the isolated font provider + // component is subpackaged. + "deprecated-allowed-packages": [ "fonts_configurable_for_test" ], }, }, } diff --git a/build/config/fuchsia/test/test_ui_stack.shard.test-cml b/build/config/fuchsia/test/test_ui_stack.shard.test-cml index 270e711..102867c 100644 --- a/build/config/fuchsia/test/test_ui_stack.shard.test-cml +++ b/build/config/fuchsia/test/test_ui_stack.shard.test-cml @@ -2,25 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. { + include: [ "//build/config/fuchsia/test/sysmem.shard.test-cml" ], children: [ { name: "test_ui_stack", url: "fuchsia-pkg://fuchsia.com/flatland-scene-manager-test-ui-stack#meta/test-ui-stack.cm", }, ], - offer: [ - { - protocol: [ - "fuchsia.logger.LogSink", - "fuchsia.scheduler.ProfileProvider", - "fuchsia.sysmem.Allocator", - "fuchsia.tracing.provider.Registry", - "fuchsia.vulkan.loader.Loader", - ], - from: "parent", - to: "#test_ui_stack", - }, - ], use: [ { protocol: [ @@ -33,15 +21,28 @@ ], from: "#test_ui_stack", }, + ], + offer: [ + { + storage: "tmp", + from: "parent", + to: "#test_ui_stack", + }, { protocol: [ + "fuchsia.logger.LogSink", + "fuchsia.scheduler.ProfileProvider", "fuchsia.sysmem.Allocator", + "fuchsia.tracing.provider.Registry", + "fuchsia.vulkan.loader.Loader", ], + from: "parent", + to: "#test_ui_stack", }, ], facets: { "fuchsia.test": { - "deprecated-allowed-packages": [ "flatland-scene-manager-test-ui-stack" ], + "deprecated-allowed-packages": [ "flatland-scene-manager-test-ui-stack" ], }, }, } diff --git a/build/config/fuchsia/test/web_instance_host.shard.test-cml b/build/config/fuchsia/test/web_instance_host.shard.test-cml deleted file mode 100644 index a46a956..0000000 --- a/build/config/fuchsia/test/web_instance_host.shard.test-cml +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2022 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -{ - use: [ - { - protocol: [ - "fuchsia.sys.Environment", - ], - }, - ], -} diff --git a/build/config/gclient_args.gni b/build/config/gclient_args.gni index 61717c6..410955b 100644 --- a/build/config/gclient_args.gni +++ b/build/config/gclient_args.gni @@ -4,7 +4,7 @@ build_with_chromium = false checkout_android = false checkout_android_prebuilts_build_tools = false checkout_android_native_support = false -checkout_google_benchmark = false +checkout_clang_coverage_tools = false checkout_ios_webkit = false checkout_nacl = false checkout_openxr = false diff --git a/build/config/ios/BUILD.gn b/build/config/ios/BUILD.gn index f0b85cc..8881312 100644 --- a/build/config/ios/BUILD.gn +++ b/build/config/ios/BUILD.gn @@ -80,6 +80,18 @@ config("compiler") { ] ldflags = common_flags + + # This is on by default in ld64 for our deployment target, but not yet + # in ld64.lld. Force it on. + if (ios_deployment_target != "11.0" && ios_deployment_target != "12.0" && + ios_deployment_target != "13.0" && ios_deployment_target != "13.4" && + ios_deployment_target != "14.0") { + ldflags += [ "-Wl,-fixup_chains" ] + } + + if (ios_is_app_extension) { + ldflags += [ "-fapplication-extension" ] + } } # This is included by reference in the //build/config/compiler:runtime_library @@ -144,7 +156,6 @@ config("ios_extension_executable_flags") { ldflags = [ "-e", "_NSExtensionMain", - "-fapplication-extension", ] # On "catalyst", the bundle structure is different (uses the same structure @@ -208,11 +219,6 @@ config("ios_shared_library_flags") { ] } -config("disable_implicit_retain_self_warning") { - cflags_objc = [ "-Wno-implicit-retain-self" ] - cflags_objcc = cflags_objc -} - config("xctest_config") { # Add some directories to the system framework search path to make # them available to the compiler while silencing warnings in the @@ -236,6 +242,8 @@ config("xctest_config") { ] } +# TODO(crbug.com/1444308): any target that uses this config will miscompile. +# This needs to be fixed if we want to use Swift - C++ interop. config("enable_swift_cxx_interop") { swiftflags = [ "-enable-experimental-cxx-interop" ] } diff --git a/build/config/ios/asset_catalog.gni b/build/config/ios/asset_catalog.gni index 79ffdb7..8695bf7 100644 --- a/build/config/ios/asset_catalog.gni +++ b/build/config/ios/asset_catalog.gni @@ -48,69 +48,63 @@ template("asset_catalog") { assert(defined(invoker.asset_type) && invoker.asset_type != "", "asset_type must be defined and not empty for $target_name") - if (is_fat_secondary_toolchain) { - group(target_name) { - public_deps = [ ":$target_name($primary_fat_toolchain_name)" ] - } - } else { - _copy_target_name = target_name + "__copy" - _data_target_name = target_name + _copy_target_name = target_name + "__copy" + _data_target_name = target_name - _sources = invoker.sources - _outputs = [] + _sources = invoker.sources + _outputs = [] - # The compilation of resources into Assets.car is enabled automatically - # by the "create_bundle" target if any of the "bundle_data" sources's - # path is in a .xcassets directory and matches one of the know asset - # catalog type. - _xcassets_dir = "$target_gen_dir/${target_name}.xcassets" - _output_dir = "$_xcassets_dir/" + - get_path_info(get_path_info(_sources[0], "dir"), "file") + # The compilation of resources into Assets.car is enabled automatically + # by the "create_bundle" target if any of the "bundle_data" sources's + # path is in a .xcassets directory and matches one of the know asset + # catalog type. + _xcassets_dir = "$target_gen_dir/${target_name}.xcassets" + _output_dir = "$_xcassets_dir/" + + get_path_info(get_path_info(_sources[0], "dir"), "file") - foreach(_source, invoker.sources) { - _dir = get_path_info(_source, "dir") - _outputs += [ "$_output_dir/" + get_path_info(_source, "file") ] + foreach(_source, invoker.sources) { + _dir = get_path_info(_source, "dir") + _outputs += [ "$_output_dir/" + get_path_info(_source, "file") ] - assert(get_path_info(_dir, "extension") == invoker.asset_type, - "$_source dirname must have .${invoker.asset_type} extension") - } + assert(get_path_info(_dir, "extension") == invoker.asset_type, + "$_source dirname must have .${invoker.asset_type} extension") + } - action(_copy_target_name) { - # Forward "deps", "public_deps" and "testonly" in case some of the - # source files are generated. - forward_variables_from(invoker, - [ - "deps", - "public_deps", - "testonly", - ]) + action(_copy_target_name) { + # Forward "deps", "public_deps" and "testonly" in case some of the + # source files are generated. + forward_variables_from(invoker, + [ + "deps", + "public_deps", + "testonly", + ]) - script = "//build/config/ios/hardlink.py" + script = "//build/config/ios/hardlink.py" - visibility = [ ":$_data_target_name" ] - sources = _sources - outputs = _outputs + [ _xcassets_dir ] + visibility = [ ":$_data_target_name" ] + sources = _sources + outputs = _outputs + [ _xcassets_dir ] - args = [ - rebase_path(get_path_info(_sources[0], "dir"), root_build_dir), - rebase_path(_output_dir, root_build_dir), - ] - } + args = [ + rebase_path(get_path_info(_sources[0], "dir"), root_build_dir), + rebase_path(_output_dir, root_build_dir), + ] + } - bundle_data(_data_target_name) { - forward_variables_from(invoker, - "*", - [ - "deps", - "outputs", - "public_deps", - "sources", - ]) + bundle_data(_data_target_name) { + forward_variables_from(invoker, + "*", + [ + "deps", + "outputs", + "public_deps", + "sources", + ]) - sources = _outputs - outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ] - public_deps = [ ":$_copy_target_name" ] - } + sources = _outputs + outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ] + public_deps = [ ":$_copy_target_name" ] } } diff --git a/build/config/ios/ios_sdk.gni b/build/config/ios/ios_sdk.gni index af498ce..65aee82 100644 --- a/build/config/ios/ios_sdk.gni +++ b/build/config/ios/ios_sdk.gni @@ -52,38 +52,13 @@ declare_args() { # identity description and app bundle id prefix. ios_mobileprovision_files = [] - # If non-empty, this list must contain valid cpu architecture, and the final - # build will be a multi-architecture build (aka fat build) supporting the - # main $target_cpu architecture and all of $additional_target_cpus. - # - # For example to build an application that will run on both arm64 and armv7 - # devices, you would use the following in args.gn file when running "gn args": - # - # target_os = "ios" - # target_cpu = "arm64" - # additional_target_cpus = [ "arm" ] - # - # You can also pass the value via "--args" parameter for "gn gen" command by - # using the syntax --args='additional_target_cpus=["arm"] target_cpu="arm64"'. - additional_target_cpus = [] - # Set to true if all test apps should use the same bundle id. ios_use_shared_bundle_id_for_test_apps = true -} -declare_args() { - # This variable is set by the toolchain. It is set to true if the toolchain - # is a secondary toolchain as part of a "fat" build. - is_fat_secondary_toolchain = false - - # This variable is set by the toolchain. It is the name of the primary - # toolchain for the fat build (could be current_toolchain). - primary_fat_toolchain_name = "" + # Set to true if building an app extension. + ios_is_app_extension = false } -assert(custom_toolchain == "" || additional_target_cpus == [], - "cannot define both custom_toolchain and additional_target_cpus") - # If codesigning is enabled, use must configure either a codesigning identity # or a filter to automatically select the codesigning identity. if (target_environment == "device" && ios_enable_code_signing) { @@ -96,25 +71,6 @@ if (target_environment == "device" && ios_enable_code_signing) { "pattern to match the identity to use).") } -# Initialize additional_toolchains from additional_target_cpus. Assert here -# that the list does not contains $target_cpu nor duplicates as this would -# cause weird errors during the build. -additional_toolchains = [] -if (additional_target_cpus != [] && !is_fat_secondary_toolchain) { - foreach(_additional_target_cpu, additional_target_cpus) { - assert(_additional_target_cpu != target_cpu, - "target_cpu must not be listed in additional_target_cpus") - - _toolchain = "${current_toolchain}_fat_${_additional_target_cpu}" - foreach(_additional_toolchain, additional_toolchains) { - assert(_toolchain != _additional_toolchain, - "additional_target_cpus must not contains duplicate values") - } - - additional_toolchains += [ _toolchain ] - } -} - if (ios_sdk_path == "") { # Compute default target. if (target_environment == "simulator") { diff --git a/build/config/ios/ios_sdk_overrides.gni b/build/config/ios/ios_sdk_overrides.gni index 03178ee..a2373c6 100644 --- a/build/config/ios/ios_sdk_overrides.gni +++ b/build/config/ios/ios_sdk_overrides.gni @@ -7,11 +7,11 @@ declare_args() { # Version of iOS that we're targeting. - ios_deployment_target = "14.0" + ios_deployment_target = "15.0" } # Always assert that ios_deployment_target is used on non-iOS platforms to # prevent unused args warnings. if (!is_ios) { - assert(ios_deployment_target == "14.0" || true) + assert(ios_deployment_target == "15.0" || true) } diff --git a/build/config/ios/ios_test_runner_wrapper.gni b/build/config/ios/ios_test_runner_wrapper.gni index 25108c5..378323c 100644 --- a/build/config/ios/ios_test_runner_wrapper.gni +++ b/build/config/ios/ios_test_runner_wrapper.gni @@ -131,11 +131,7 @@ template("ios_test_runner_wrapper") { _wrapper_output_name = wrapper_output_name } - # Test targets may attempt to generate multiple wrappers for a suite with - # multiple different toolchains when running with additional_target_cpus. - # Generate the wrapper script into root_out_dir rather than root_build_dir - # to ensure those wrappers are distinct. - wrapper_script = "${root_out_dir}/bin/${_wrapper_output_name}" + wrapper_script = "${root_build_dir}/bin/${_wrapper_output_name}" data = [] if (defined(invoker.data)) { diff --git a/build/config/ios/rules.gni b/build/config/ios/rules.gni index c418507..9cb3002 100644 --- a/build/config/ios/rules.gni +++ b/build/config/ios/rules.gni @@ -18,116 +18,6 @@ _ios_xcode_appex_bundle_id = "com.apple.product-type.app-extension" _ios_xcode_xctest_bundle_id = "com.apple.product-type.bundle.unit-test" _ios_xcode_xcuitest_bundle_id = "com.apple.product-type.bundle.ui-testing" -# Invokes lipo on multiple arch-specific binaries to create a fat binary. -# -# Arguments -# -# arch_binary_target -# name of the target generating the arch-specific binaries, they must -# be named $target_out_dir/$toolchain_cpu/$arch_binary_output. -# -# arch_binary_output -# (optional, defaults to the name of $arch_binary_target) base name of -# the arch-specific binary generated by arch_binary_target. -# -# output_name -# (optional, defaults to $target_name) base name of the target output, -# the full path will be $target_out_dir/$output_name. -# -# configs -# (optional) a list of configurations, this is used to check whether -# the binary should be stripped, when "enable_stripping" is true. -# -template("lipo_binary") { - assert(defined(invoker.arch_binary_target), - "arch_binary_target must be defined for $target_name") - - assert(!is_fat_secondary_toolchain, - "lipo_binary can only be used in the primary toolchain of a fat build") - - _target_name = target_name - _output_name = target_name - if (defined(invoker.output_name)) { - _output_name = invoker.output_name - } - - _all_target_cpu = [ current_cpu ] + additional_target_cpus - _all_toolchains = [ current_toolchain ] + additional_toolchains - - _arch_binary_target = invoker.arch_binary_target - _arch_binary_output = get_label_info(_arch_binary_target, "name") - if (defined(invoker.arch_binary_output)) { - _arch_binary_output = invoker.arch_binary_output - } - - action(_target_name) { - forward_variables_from(invoker, - "*", - [ - "arch_binary_output", - "arch_binary_target", - "configs", - "output_name", - ]) - - script = "//build/toolchain/apple/linker_driver.py" - - # http://crbug.com/762840. Fix for bots running out of memory. - pool = "//build/toolchain:link_pool($default_toolchain)" - - outputs = [ "$target_out_dir/$_output_name" ] - - deps = [] - _index = 0 - inputs = [] - foreach(_cpu, _all_target_cpu) { - _toolchain = _all_toolchains[_index] - _index = _index + 1 - - inputs += - [ get_label_info("$_arch_binary_target($_toolchain)", - "target_out_dir") + "/$_cpu/$_arch_binary_output" ] - - deps += [ "$_arch_binary_target($_toolchain)" ] - } - - args = [ - "xcrun", - "lipo", - "-create", - "-output", - rebase_path("$target_out_dir/$_output_name", root_build_dir), - ] + rebase_path(inputs, root_build_dir) - - if (enable_dsyms) { - _dsyms_output_dir = "$root_out_dir/$_output_name.dSYM" - outputs += [ - "$_dsyms_output_dir/", - "$_dsyms_output_dir/Contents/Info.plist", - "$_dsyms_output_dir/Contents/Resources/DWARF/$_output_name", - ] - args += [ - "-Wcrl,dsym," + rebase_path("$root_out_dir/.", root_build_dir), - "-Wcrl,dsymutilpath," + - rebase_path("//tools/clang/dsymutil/bin/dsymutil", root_build_dir), - ] - } - - if (enable_stripping) { - args += [ "-Wcrl,strip,-x,-S" ] - if (save_unstripped_output) { - outputs += [ "$root_out_dir/$_output_name.unstripped" ] - args += [ "-Wcrl,unstripped," + - rebase_path("$root_out_dir/.", root_build_dir) ] - } - } - if (!is_debug && use_thin_lto && is_a_target_toolchain) { - args += [ "-Wcrl,clean_objects," + - string_join(",", rebase_path(inputs, root_build_dir)) ] - } - } -} - # Wrapper around create_bundle taking care of code signature settings. # # Arguments @@ -216,6 +106,13 @@ template("lipo_binary") { # (optional) path to the partial Info.plist generated by the asset # catalog compiler; if defined $primary_info_plist must also be defined. # +# transparent +# (optional) boolean, whether the bundle is "transparent"; defaults to +# "false" if ommitted; a bundle is considered "transparent" if it does +# not package the "bundle_data" deps but forward them to all targets +# the depend on it (unless the "bundle_data" target sets "product_type" +# to the same value as the "create_signed_bundle" target). +# template("create_signed_bundle") { assert(defined(invoker.product_type), "product_type must be defined for $target_name") @@ -310,6 +207,7 @@ template("create_signed_bundle") { "public_configs", "public_deps", "testonly", + "transparent", "visibility", "xcode_test_application_name", ]) @@ -477,7 +375,7 @@ template("create_signed_bundle") { } } -# Generates Info.plist files for Mac apps and frameworks. +# Generates Info.plist files for iOS apps and frameworks. # # Arguments # @@ -611,11 +509,6 @@ template("ios_app_bundle") { _output_name = invoker.output_name } - _primary_toolchain = current_toolchain - if (is_fat_secondary_toolchain) { - _primary_toolchain = primary_fat_toolchain_name - } - assert( !defined(invoker.bundle_extension), "bundle_extension must not be set for ios_app_bundle template for $target_name") @@ -631,10 +524,6 @@ template("ios_app_bundle") { "$ios_app_bundle_id_prefix." + string_replace(_output_name, "_", "-") } - _arch_executable_source = _target_name + "_arch_executable_sources" - _arch_executable_target = _target_name + "_arch_executable" - _lipo_executable_target = _target_name + "_executable" - if (defined(invoker.variants) && invoker.variants != []) { _variants = [] @@ -671,35 +560,11 @@ template("ios_app_bundle") { _default_variant = _variants[0] - source_set(_arch_executable_source) { - forward_variables_from(invoker, - "*", - [ - "bundle_deps", - "bundle_deps_filter", - "bundle_extension", - "enable_code_signing", - "entitlements_path", - "entitlements_target", - "extra_substitutions", - "extra_system_frameworks", - "info_plist", - "info_plist_target", - "output_name", - "product_type", - "visibility", - "xcode_extra_attributes", - ]) - - visibility = [ ":$_arch_executable_target" ] - } - - if (!is_fat_secondary_toolchain || target_environment == "simulator") { - _generate_entitlements_target = _target_name + "_gen_entitlements" - _generate_entitlements_output = - get_label_info(":$_generate_entitlements_target($_primary_toolchain)", - "target_out_dir") + "/$_output_name.xcent" - } + _executable_target = _target_name + "_executable" + _generate_entitlements_target = _target_name + "_gen_entitlements" + _generate_entitlements_output = + get_label_info(":$_generate_entitlements_target", "target_out_dir") + + "/$_output_name.xcent" _product_type = _ios_xcode_app_bundle_id if (defined(invoker.product_type)) { @@ -716,7 +581,7 @@ template("ios_app_bundle") { _is_app_bundle = _product_type == _ios_xcode_app_bundle_id - executable(_arch_executable_target) { + executable(_executable_target) { forward_variables_from(invoker, "*", [ @@ -732,28 +597,20 @@ template("ios_app_bundle") { "info_plist_target", "output_name", "product_type", - "sources", "visibility", "xcode_extra_attributes", ]) - visibility = [ ":$_lipo_executable_target($_primary_toolchain)" ] - if (is_fat_secondary_toolchain) { - visibility += [ ":$_target_name" ] - } - - if (!defined(deps)) { - deps = [] - } - deps += [ ":$_arch_executable_source" ] - - if (!defined(frameworks)) { - frameworks = [] + visibility = [] + foreach(_variant, _variants) { + visibility += [ ":${_variant.target_name}" ] } - frameworks += [ "UIKit.framework" ] if (target_environment == "simulator") { - deps += [ ":$_generate_entitlements_target($_primary_toolchain)" ] + if (!defined(deps)) { + deps = [] + } + deps += [ ":$_generate_entitlements_target" ] if (!defined(inputs)) { inputs = [] @@ -769,207 +626,171 @@ template("ios_app_bundle") { output_name = _output_name output_prefix_override = true - output_dir = "$target_out_dir/$current_cpu" + output_dir = target_out_dir } - if (is_fat_secondary_toolchain) { - # For fat builds, only the default toolchain will generate an application - # bundle. For the other toolchains, the template is only used for building - # the arch-specific binary, thus the default target is just a group(). + _generate_info_plist = target_name + "_generate_info_plist" + ios_info_plist(_generate_info_plist) { + forward_variables_from(invoker, + [ + "info_plist", + "info_plist_target", + ]) - group(_target_name) { - forward_variables_from(invoker, - [ - "visibility", - "testonly", - ]) - public_deps = [ ":$_arch_executable_target" ] + executable_name = _output_name + + extra_substitutions = [ "BUNDLE_IDENTIFIER=$_bundle_identifier" ] + if (defined(invoker.extra_substitutions)) { + extra_substitutions += invoker.extra_substitutions + } + } + + if (!defined(invoker.entitlements_target)) { + _entitlements_path = "//build/config/ios/entitlements.plist" + if (defined(invoker.entitlements_path)) { + _entitlements_path = invoker.entitlements_path } } else { - lipo_binary(_lipo_executable_target) { - forward_variables_from(invoker, - [ - "configs", - "testonly", - ]) + assert(!defined(invoker.entitlements_path), + "Cannot define both entitlements_path and entitlements_target" + + "for $_target_name") - visibility = [] - foreach(_variant, _variants) { - visibility += [ ":${_variant.target_name}" ] - } + _entitlements_target_outputs = + get_target_outputs(invoker.entitlements_target) + _entitlements_path = _entitlements_target_outputs[0] + } - output_name = _output_name - arch_binary_target = ":$_arch_executable_target" - arch_binary_output = _output_name - } + action(_generate_entitlements_target) { + _gen_info_plist_outputs = get_target_outputs(":$_generate_info_plist") + _info_plist_path = _gen_info_plist_outputs[0] - _generate_info_plist = target_name + "_generate_info_plist" - ios_info_plist(_generate_info_plist) { - forward_variables_from(invoker, - [ - "info_plist", - "info_plist_target", - ]) + script = "//build/config/ios/codesign.py" + deps = [ ":$_generate_info_plist" ] + if (defined(invoker.entitlements_target)) { + deps += [ invoker.entitlements_target ] + } + sources = [ + _entitlements_path, + _info_plist_path, + ] + sources += ios_mobileprovision_files - executable_name = _output_name + outputs = [ _generate_entitlements_output ] - extra_substitutions = [ "BUNDLE_IDENTIFIER=$_bundle_identifier" ] - if (defined(invoker.extra_substitutions)) { - extra_substitutions += invoker.extra_substitutions - } + args = [ + "generate-entitlements", + "-e=" + rebase_path(_entitlements_path, root_build_dir), + "-p=" + rebase_path(_info_plist_path, root_build_dir), + ] + foreach(mobileprovision, ios_mobileprovision_files) { + args += [ "-m=" + rebase_path(mobileprovision, root_build_dir) ] } + args += rebase_path(outputs, root_build_dir) + } - if (!is_fat_secondary_toolchain) { - if (!defined(invoker.entitlements_target)) { - _entitlements_path = "//build/config/ios/entitlements.plist" - if (defined(invoker.entitlements_path)) { - _entitlements_path = invoker.entitlements_path - } - } else { - assert(!defined(invoker.entitlements_path), - "Cannot define both entitlements_path and entitlements_target" + - "for $_target_name") + # Only write PkgInfo for real application, not application extension. + if (_is_app_bundle) { + _create_pkg_info = target_name + "_pkg_info" + action(_create_pkg_info) { + forward_variables_from(invoker, [ "testonly" ]) + script = "//build/apple/write_pkg_info.py" + inputs = [ "//build/apple/plist_util.py" ] + sources = get_target_outputs(":$_generate_info_plist") + outputs = [ + # Cannot name the output PkgInfo as the name will not be unique if + # multiple ios_app_bundle are defined in the same BUILD.gn file. The + # file is renamed in the bundle_data outputs to the correct name. + "$target_gen_dir/$target_name", + ] + args = [ "--plist" ] + rebase_path(sources, root_build_dir) + + [ "--output" ] + rebase_path(outputs, root_build_dir) + deps = [ ":$_generate_info_plist" ] + } - _entitlements_target_outputs = - get_target_outputs(invoker.entitlements_target) - _entitlements_path = _entitlements_target_outputs[0] - } + _bundle_data_pkg_info = target_name + "_bundle_data_pkg_info" + bundle_data(_bundle_data_pkg_info) { + forward_variables_from(invoker, [ "testonly" ]) + sources = get_target_outputs(":$_create_pkg_info") + outputs = [ "{{bundle_resources_dir}}/PkgInfo" ] + public_deps = [ ":$_create_pkg_info" ] + } + } - action(_generate_entitlements_target) { - _gen_info_plist_outputs = get_target_outputs(":$_generate_info_plist") - _info_plist_path = _gen_info_plist_outputs[0] + foreach(_variant, _variants) { + create_signed_bundle(_variant.target_name) { + forward_variables_from(invoker, + [ + "bundle_deps", + "bundle_deps_filter", + "data_deps", + "deps", + "enable_code_signing", + "entitlements_path", + "entitlements_target", + "extra_system_frameworks", + "public_configs", + "public_deps", + "testonly", + "visibility", + "xcode_extra_attributes", + ]) - script = "//build/config/ios/codesign.py" - deps = [ ":$_generate_info_plist" ] - if (defined(invoker.entitlements_target)) { - deps += [ invoker.entitlements_target ] - } - sources = [ - _entitlements_path, - _info_plist_path, - ] - sources += ios_mobileprovision_files + output_name = _output_name + bundle_gen_dir = _variant.bundle_gen_dir + bundle_binary_target = ":$_executable_target" + bundle_binary_output = _output_name + bundle_extension = _bundle_extension + product_type = _product_type + xcode_product_bundle_id = _bundle_identifier - outputs = [ _generate_entitlements_output ] + _generate_info_plist_outputs = + get_target_outputs(":$_generate_info_plist") + primary_info_plist = _generate_info_plist_outputs[0] + partial_info_plist = + "$target_gen_dir/${_variant.target_name}_partial_info.plist" - args = [ - "generate-entitlements", - "-e=" + rebase_path(_entitlements_path, root_build_dir), - "-p=" + rebase_path(_info_plist_path, root_build_dir), - ] - foreach(mobileprovision, ios_mobileprovision_files) { - args += [ "-m=" + rebase_path(mobileprovision, root_build_dir) ] - } - args += rebase_path(outputs, root_build_dir) + if (!defined(deps)) { + deps = [] } - } + deps += [ ":$_generate_info_plist" ] - # Only write PkgInfo for real application, not application extension. - if (_is_app_bundle) { - _create_pkg_info = target_name + "_pkg_info" - action(_create_pkg_info) { - forward_variables_from(invoker, [ "testonly" ]) - script = "//build/apple/write_pkg_info.py" - inputs = [ "//build/apple/plist_util.py" ] - sources = get_target_outputs(":$_generate_info_plist") - outputs = [ - # Cannot name the output PkgInfo as the name will not be unique if - # multiple ios_app_bundle are defined in the same BUILD.gn file. The - # file is renamed in the bundle_data outputs to the correct name. - "$target_gen_dir/$target_name", - ] - args = [ "--plist" ] + rebase_path(sources, root_build_dir) + - [ "--output" ] + rebase_path(outputs, root_build_dir) - deps = [ ":$_generate_info_plist" ] + if (!defined(bundle_deps)) { + bundle_deps = [] } - - _bundle_data_pkg_info = target_name + "_bundle_data_pkg_info" - bundle_data(_bundle_data_pkg_info) { - forward_variables_from(invoker, [ "testonly" ]) - sources = get_target_outputs(":$_create_pkg_info") - outputs = [ "{{bundle_resources_dir}}/PkgInfo" ] - public_deps = [ ":$_create_pkg_info" ] + if (_is_app_bundle) { + bundle_deps += [ ":$_bundle_data_pkg_info" ] } - } - - foreach(_variant, _variants) { - create_signed_bundle(_variant.target_name) { - forward_variables_from(invoker, - [ - "bundle_deps", - "bundle_deps_filter", - "data_deps", - "deps", - "enable_code_signing", - "entitlements_path", - "entitlements_target", - "extra_system_frameworks", - "public_configs", - "public_deps", - "testonly", - "visibility", - "xcode_extra_attributes", - ]) - - output_name = _output_name - bundle_gen_dir = _variant.bundle_gen_dir - bundle_binary_target = ":$_lipo_executable_target" - bundle_binary_output = _output_name - bundle_extension = _bundle_extension - product_type = _product_type - xcode_product_bundle_id = _bundle_identifier - - _generate_info_plist_outputs = - get_target_outputs(":$_generate_info_plist") - primary_info_plist = _generate_info_plist_outputs[0] - partial_info_plist = - "$target_gen_dir/${_variant.target_name}_partial_info.plist" - - if (!defined(deps)) { - deps = [] - } - deps += [ ":$_generate_info_plist" ] + bundle_deps += _variant.bundle_deps - if (!defined(bundle_deps)) { - bundle_deps = [] + if (target_environment == "simulator") { + if (!defined(data_deps)) { + data_deps = [] } - if (_is_app_bundle) { - bundle_deps += [ ":$_bundle_data_pkg_info" ] - } - bundle_deps += _variant.bundle_deps - - if (target_environment == "simulator") { - if (!defined(data_deps)) { - data_deps = [] - } + if (build_with_chromium) { data_deps += [ "//testing/iossim" ] } } } + } - if (_default_variant.name != "") { - _bundle_short_name = "$_output_name$_bundle_extension" - action(_target_name) { - forward_variables_from(invoker, [ "testonly" ]) + if (_default_variant.name != "") { + _bundle_short_name = "$_output_name$_bundle_extension" + action(_target_name) { + forward_variables_from(invoker, [ "testonly" ]) - script = "//build/config/ios/hardlink.py" - public_deps = [] - foreach(_variant, _variants) { - public_deps += [ ":${_variant.target_name}" ] - } + script = "//build/config/ios/hardlink.py" + public_deps = [] + foreach(_variant, _variants) { + public_deps += [ ":${_variant.target_name}" ] + } - sources = [ "${_default_variant.bundle_gen_dir}/$_bundle_short_name" ] - outputs = [ "$root_out_dir/$_bundle_short_name" ] + sources = [ "${_default_variant.bundle_gen_dir}/$_bundle_short_name" ] + outputs = [ "$root_out_dir/$_bundle_short_name" ] - args = rebase_path(sources, root_build_dir) + - rebase_path(outputs, root_build_dir) - } + args = rebase_path(sources, root_build_dir) + + rebase_path(outputs, root_build_dir) } } - - if (is_fat_secondary_toolchain) { - not_needed("*") - } } set_defaults("ios_app_bundle") { @@ -1005,6 +826,8 @@ set_defaults("ios_app_bundle") { # # For more information, see "gn help executable". template("ios_appex_bundle") { + assert(ios_is_app_extension, + "$target_name needs to be defined in app extension toolchain context") ios_app_bundle(target_name) { forward_variables_from(invoker, "*", @@ -1196,6 +1019,13 @@ template("bundle_data_strings") { # (optional) boolean, control whether code signing is enabled or not, # default to ios_enable_code_signing if not defined. # +# transparent +# (optional) boolean, whether the bundle is "transparent"; defaults to +# "false" if ommitted; a bundle is considered "transparent" if it does +# not package the "bundle_data" deps but forward them to all targets +# the depend on it (unless the "bundle_data" target sets "product_type" +# to "com.apple.product-type.framework"). +# # This template provides two targets for the resulting framework bundle. The # link-time behavior varies depending on which of the two targets below is # added as a dependency: @@ -1269,30 +1099,16 @@ template("ios_framework_bundle") { _output_name = invoker.output_name } + _product_type = "com.apple.product-type.framework" _has_public_headers = defined(invoker.public_headers) && invoker.public_headers != [] - _primary_toolchain = current_toolchain - if (is_fat_secondary_toolchain) { - _primary_toolchain = primary_fat_toolchain_name - } - - # Public configs are not propagated across toolchain (see crbug.com/675224) - # so some configs have to be defined for both default_toolchain and all others - # toolchains when performing a fat build. Use "get_label_info" to construct - # the path since they need to be relative to the default_toolchain. - - _default_toolchain_root_out_dir = - get_label_info("$_target_name($_primary_toolchain)", "root_out_dir") - - _arch_shared_library_source = _target_name + "_arch_shared_library_sources" - _arch_shared_library_target = _target_name + "_arch_shared_library" - _lipo_shared_library_target = _target_name + "_shared_library" + _shared_library_target = _target_name + "_shared_library" _link_target_name = _target_name + "+link" if (_has_public_headers) { _default_toolchain_target_gen_dir = - get_label_info("$_target_name($_primary_toolchain)", "target_gen_dir") + get_label_info("$_target_name", "target_gen_dir") _framework_headers_target = _target_name + "_framework_headers" @@ -1301,7 +1117,7 @@ template("ios_framework_bundle") { "$_default_toolchain_target_gen_dir/$_output_name.headers.hmap" config(_headers_map_config) { visibility = [ - ":${_arch_shared_library_source}", + ":${_shared_library_target}", ":${_target_name}_signed_bundle", ] include_dirs = [ _header_map_filename ] @@ -1310,7 +1126,7 @@ template("ios_framework_bundle") { _framework_headers_config = _target_name + "_framework_headers_config" config(_framework_headers_config) { - framework_dirs = [ _default_toolchain_root_out_dir ] + framework_dirs = [ root_out_dir ] } _framework_public_config = _target_name + "_public_config" @@ -1319,7 +1135,7 @@ template("ios_framework_bundle") { frameworks = [ "$_output_name.framework" ] } - source_set(_arch_shared_library_source) { + shared_library(_shared_library_target) { forward_variables_from(invoker, "*", [ @@ -1332,10 +1148,17 @@ template("ios_framework_bundle") { "info_plist_target", "output_name", "public_configs", + "transparent", "visibility", ]) - visibility = [ ":$_arch_shared_library_target" ] + visibility = [ ":${_target_name}_signed_bundle" ] + + if (!defined(ldflags)) { + ldflags = [] + } + ldflags += + [ "-Wl,-install_name,@rpath/$_output_name.framework/$_output_name" ] if (_has_public_headers) { configs += [ ":$_headers_map_config" ] @@ -1343,309 +1166,216 @@ template("ios_framework_bundle") { if (!defined(deps)) { deps = [] } - deps += [ ":$_framework_headers_target($_primary_toolchain)" ] - } - } - - shared_library(_arch_shared_library_target) { - forward_variables_from(invoker, - "*", - [ - "bundle_deps", - "bundle_deps_filter", - "data_deps", - "enable_code_signing", - "extra_substitutions", - "info_plist", - "info_plist_target", - "output_name", - "sources", - "public_configs", - "visibility", - ]) - - visibility = [ ":$_lipo_shared_library_target($_primary_toolchain)" ] - if (is_fat_secondary_toolchain) { - visibility += [ - ":${_target_name}", - ":${_target_name}_signed_bundle", - ] + deps += [ ":$_framework_headers_target" ] } - if (!defined(deps)) { - deps = [] - } - deps += [ ":$_arch_shared_library_source" ] - if (_has_public_headers) { - deps += [ ":$_framework_headers_target($_primary_toolchain)" ] - } - if (!defined(ldflags)) { - ldflags = [] - } - ldflags += - [ "-Wl,-install_name,@rpath/$_output_name.framework/$_output_name" ] - output_extension = "" output_name = _output_name output_prefix_override = true - output_dir = "$target_out_dir/$current_cpu" + output_dir = target_out_dir } - if (is_fat_secondary_toolchain) { - # For fat builds, only the default toolchain will generate a framework - # bundle. For the other toolchains, the template is only used for building - # the arch-specific binary, thus the default target is just a group(). + if (_has_public_headers) { + _public_headers = invoker.public_headers - group(_target_name) { - forward_variables_from(invoker, - [ - "visibility", - "testonly", - ]) - public_deps = [ ":$_arch_shared_library_target" ] + _framework_root_dir = "$root_out_dir/$_output_name.framework" + if (target_environment == "simulator" || target_environment == "device") { + _framework_contents_dir = _framework_root_dir + } else if (target_environment == "catalyst") { + _framework_contents_dir = "$_framework_root_dir/Versions/A" } - group(_link_target_name) { + _compile_headers_map_target = _target_name + "_compile_headers_map" + action(_compile_headers_map_target) { + visibility = [ ":$_framework_headers_target" ] forward_variables_from(invoker, [ - "public_configs", - "visibility", + "deps", + "public_deps", "testonly", ]) - public_deps = [ ":$_link_target_name($_primary_toolchain)" ] - - if (_has_public_headers) { - if (!defined(public_configs)) { - public_configs = [] + script = "//build/config/ios/write_framework_hmap.py" + outputs = [ _header_map_filename ] + + # The header map generation only wants the list of headers, not all of + # sources, so filter any non-header source files from "sources". It is + # less error prone that having the developer duplicate the list of all + # headers in addition to "sources". + sources = [] + foreach(_source, invoker.sources) { + if (get_path_info(_source, "extension") == "h") { + sources += [ _source ] } - public_configs += [ ":$_framework_headers_config" ] - } - if (!defined(all_dependent_configs)) { - all_dependent_configs = [] } - all_dependent_configs += [ ":$_framework_public_config" ] - } - group("$_target_name+bundle") { - forward_variables_from(invoker, [ "testonly" ]) - public_deps = [ ":$_target_name+bundle($_primary_toolchain)" ] + args = [ + rebase_path(_header_map_filename, root_build_dir), + rebase_path(_framework_root_dir, root_build_dir), + ] + rebase_path(sources, root_build_dir) } - not_needed(invoker, "*") - } else { - if (_has_public_headers) { - _public_headers = invoker.public_headers - - _framework_root_dir = "$root_out_dir/$_output_name.framework" - if (target_environment == "simulator" || target_environment == "device") { - _framework_contents_dir = _framework_root_dir - } else if (target_environment == "catalyst") { - _framework_contents_dir = "$_framework_root_dir/Versions/A" - } - - _compile_headers_map_target = _target_name + "_compile_headers_map" - action(_compile_headers_map_target) { - visibility = [ ":$_framework_headers_target" ] - forward_variables_from(invoker, - [ - "deps", - "public_deps", - "testonly", - ]) - script = "//build/config/ios/write_framework_hmap.py" - outputs = [ _header_map_filename ] - - # The header map generation only wants the list of headers, not all of - # sources, so filter any non-header source files from "sources". It is - # less error prone that having the developer duplicate the list of all - # headers in addition to "sources". - sources = [] - foreach(_source, invoker.sources) { - if (get_path_info(_source, "extension") == "h") { - sources += [ _source ] - } - } - - args = [ - rebase_path(_header_map_filename, root_build_dir), - rebase_path(_framework_root_dir, root_build_dir), - ] + rebase_path(sources, root_build_dir) - } - - _create_module_map_target = _target_name + "_module_map" - action(_create_module_map_target) { - visibility = [ ":$_framework_headers_target" ] - script = "//build/config/ios/write_framework_modulemap.py" - outputs = [ "$_framework_contents_dir/Modules/module.modulemap" ] - args = [ - _output_name, - rebase_path("$_framework_contents_dir/Modules", root_build_dir), - ] - } - - _copy_public_headers_target = _target_name + "_copy_public_headers" - copy(_copy_public_headers_target) { - forward_variables_from(invoker, - [ - "testonly", - "deps", - ]) - visibility = [ ":$_framework_headers_target" ] - sources = _public_headers - outputs = [ "$_framework_contents_dir/Headers/{{source_file_part}}" ] - - # Do not use forward_variables_from for "public_deps" as - # we do not want to forward those dependencies. - if (defined(invoker.public_deps)) { - if (!defined(deps)) { - deps = [] - } - deps += invoker.public_deps - } - } - - group(_framework_headers_target) { - forward_variables_from(invoker, [ "testonly" ]) - deps = [ - ":$_compile_headers_map_target", - ":$_create_module_map_target", - ] - public_deps = [ ":$_copy_public_headers_target" ] - } + _create_module_map_target = _target_name + "_module_map" + action(_create_module_map_target) { + visibility = [ ":$_framework_headers_target" ] + script = "//build/config/ios/write_framework_modulemap.py" + outputs = [ "$_framework_contents_dir/Modules/module.modulemap" ] + args = [ + _output_name, + rebase_path("$_framework_contents_dir/Modules", root_build_dir), + ] } - lipo_binary(_lipo_shared_library_target) { + _copy_public_headers_target = _target_name + "_copy_public_headers" + copy(_copy_public_headers_target) { forward_variables_from(invoker, [ - "configs", "testonly", + "deps", ]) + visibility = [ ":$_framework_headers_target" ] + sources = _public_headers + outputs = [ "$_framework_contents_dir/Headers/{{source_file_part}}" ] - visibility = [ ":${_target_name}_signed_bundle" ] - output_name = _output_name - arch_binary_target = ":$_arch_shared_library_target" - arch_binary_output = _output_name + # Do not use forward_variables_from for "public_deps" as + # we do not want to forward those dependencies. + if (defined(invoker.public_deps)) { + if (!defined(deps)) { + deps = [] + } + deps += invoker.public_deps + } } - # Bundle identifier should respect rfc1034, so replace "_" with "-". - _bundle_identifier = - "$ios_app_bundle_id_prefix." + string_replace(_output_name, "_", "-") + group(_framework_headers_target) { + forward_variables_from(invoker, [ "testonly" ]) + deps = [ + ":$_compile_headers_map_target", + ":$_create_module_map_target", + ] + public_deps = [ ":$_copy_public_headers_target" ] + } + } - _info_plist_target = _target_name + "_info_plist" - _info_plist_bundle = _target_name + "_info_plist_bundle" - ios_info_plist(_info_plist_target) { - visibility = [ ":$_info_plist_bundle" ] - executable_name = _output_name - forward_variables_from(invoker, - [ - "info_plist", - "info_plist_target", - ]) + # Bundle identifier should respect rfc1034, so replace "_" with "-". + _bundle_identifier = + "$ios_app_bundle_id_prefix." + string_replace(_output_name, "_", "-") - extra_substitutions = [ "BUNDLE_IDENTIFIER=$_bundle_identifier" ] - if (defined(invoker.extra_substitutions)) { - extra_substitutions += invoker.extra_substitutions - } + _info_plist_target = _target_name + "_info_plist" + _info_plist_bundle = _target_name + "_info_plist_bundle" + ios_info_plist(_info_plist_target) { + visibility = [ ":$_info_plist_bundle" ] + executable_name = _output_name + forward_variables_from(invoker, + [ + "info_plist", + "info_plist_target", + ]) + + extra_substitutions = [ "BUNDLE_IDENTIFIER=$_bundle_identifier" ] + if (defined(invoker.extra_substitutions)) { + extra_substitutions += invoker.extra_substitutions } + } - bundle_data(_info_plist_bundle) { - visibility = [ ":${_target_name}_signed_bundle" ] - forward_variables_from(invoker, [ "testonly" ]) - sources = get_target_outputs(":$_info_plist_target") - public_deps = [ ":$_info_plist_target" ] + bundle_data(_info_plist_bundle) { + visibility = [ ":${_target_name}_signed_bundle" ] + forward_variables_from(invoker, [ "testonly" ]) + sources = get_target_outputs(":$_info_plist_target") + public_deps = [ ":$_info_plist_target" ] + product_type = _product_type - if (target_environment != "catalyst") { - outputs = [ "{{bundle_contents_dir}}/Info.plist" ] - } else { - outputs = [ "{{bundle_resources_dir}}/Info.plist" ] - } + if (target_environment != "catalyst") { + outputs = [ "{{bundle_contents_dir}}/Info.plist" ] + } else { + outputs = [ "{{bundle_resources_dir}}/Info.plist" ] } + } - create_signed_bundle(_target_name + "_signed_bundle") { - forward_variables_from(invoker, - [ - "bundle_deps", - "bundle_deps_filter", - "data_deps", - "deps", - "enable_code_signing", - "public_configs", - "public_deps", - "testonly", - "visibility", - ]) + create_signed_bundle(_target_name + "_signed_bundle") { + forward_variables_from(invoker, + [ + "bundle_deps", + "bundle_deps_filter", + "data_deps", + "deps", + "enable_code_signing", + "public_configs", + "public_deps", + "testonly", + "transparent", + "visibility", + ]) - product_type = "com.apple.product-type.framework" - bundle_extension = ".framework" + product_type = _product_type + bundle_extension = ".framework" - output_name = _output_name - bundle_binary_target = ":$_lipo_shared_library_target" - bundle_binary_output = _output_name + output_name = _output_name + bundle_binary_target = ":$_shared_library_target" + bundle_binary_output = _output_name - has_public_headers = _has_public_headers + has_public_headers = _has_public_headers - # Framework do not have entitlements nor mobileprovision because they use - # the one from the bundle using them (.app or .appex) as they are just - # dynamic library with shared code. - disable_entitlements = true - disable_embedded_mobileprovision = true + # Framework do not have entitlements nor mobileprovision because they use + # the one from the bundle using them (.app or .appex) as they are just + # dynamic library with shared code. + disable_entitlements = true + disable_embedded_mobileprovision = true - if (!defined(deps)) { - deps = [] - } - deps += [ ":$_info_plist_bundle" ] + if (!defined(deps)) { + deps = [] } + deps += [ ":$_info_plist_bundle" ] + } - group(_target_name) { - forward_variables_from(invoker, - [ - "public_configs", - "public_deps", - "testonly", - "visibility", - ]) - if (!defined(public_deps)) { - public_deps = [] - } - public_deps += [ ":${_target_name}_signed_bundle" ] - - if (_has_public_headers) { - if (!defined(public_configs)) { - public_configs = [] - } - public_configs += [ ":$_framework_headers_config" ] - } + group(_target_name) { + forward_variables_from(invoker, + [ + "public_configs", + "public_deps", + "testonly", + "visibility", + ]) + if (!defined(public_deps)) { + public_deps = [] } + public_deps += [ ":${_target_name}_signed_bundle" ] - group(_link_target_name) { - forward_variables_from(invoker, - [ - "public_configs", - "public_deps", - "testonly", - "visibility", - ]) - if (!defined(public_deps)) { - public_deps = [] + if (_has_public_headers) { + if (!defined(public_configs)) { + public_configs = [] } - public_deps += [ ":$_target_name" ] + public_configs += [ ":$_framework_headers_config" ] + } + } - if (!defined(all_dependent_configs)) { - all_dependent_configs = [] - } - all_dependent_configs += [ ":$_framework_public_config" ] + group(_link_target_name) { + forward_variables_from(invoker, + [ + "public_configs", + "public_deps", + "testonly", + "visibility", + ]) + if (!defined(public_deps)) { + public_deps = [] } + public_deps += [ ":$_target_name" ] - bundle_data(_target_name + "+bundle") { - forward_variables_from(invoker, - [ - "testonly", - "visibility", - ]) - public_deps = [ ":$_target_name" ] - sources = [ "$root_out_dir/$_output_name.framework" ] - outputs = [ "{{bundle_contents_dir}}/Frameworks/$_output_name.framework" ] + if (!defined(all_dependent_configs)) { + all_dependent_configs = [] } + all_dependent_configs += [ ":$_framework_public_config" ] + } + + bundle_data(_target_name + "+bundle") { + forward_variables_from(invoker, + [ + "testonly", + "visibility", + ]) + public_deps = [ ":$_target_name" ] + sources = [ "$root_out_dir/$_output_name.framework" ] + outputs = [ "{{bundle_contents_dir}}/Frameworks/$_output_name.framework" ] } } @@ -1693,13 +1423,6 @@ template("ios_xctest_bundle") { assert(defined(invoker.xcode_test_application_name), "xcode_test_application_name must be defined for $target_name") - # Silence "assignment had no effect" error for non-default toolchains as - # following variables are only used in the expansion of the template for the - # default toolchain. - if (is_fat_secondary_toolchain) { - not_needed(invoker, "*") - } - _target_name = target_name _output_name = target_name @@ -1707,159 +1430,136 @@ template("ios_xctest_bundle") { _output_name = invoker.output_name } - _arch_loadable_module_source = _target_name + "_arch_loadable_module_source" - _arch_loadable_module_target = _target_name + "_arch_loadable_module" - _lipo_loadable_module_target = _target_name + "_loadable_module" - - _primary_toolchain = current_toolchain - if (is_fat_secondary_toolchain) { - _primary_toolchain = primary_fat_toolchain_name - } - - source_set(_arch_loadable_module_source) { - forward_variables_from(invoker, [ "deps" ]) + _loadable_module_target = _target_name + "_loadable_module" - testonly = true - visibility = [ ":$_arch_loadable_module_target" ] - } + loadable_module(_loadable_module_target) { + forward_variables_from(invoker, + "*", + [ + "bundle_deps", + "bundle_deps_filter", + "host_target", + "output_dir", + "output_extension", + "output_name", + "output_prefix_override", + "product_type", + "testonly", + "visibility", + "xcode_test_application_name", + "xcode_test_application_output_name", + "xctest_bundle_principal_class", + ]) - loadable_module(_arch_loadable_module_target) { testonly = true - visibility = [ ":$_lipo_loadable_module_target($_primary_toolchain)" ] - if (is_fat_secondary_toolchain) { - visibility += [ ":$_target_name" ] - } + visibility = [ ":$_target_name" ] - deps = [ ":$_arch_loadable_module_source" ] configs += [ "//build/config/ios:xctest_config" ] - output_dir = "$target_out_dir/$current_cpu" + output_dir = target_out_dir output_name = _output_name output_prefix_override = true output_extension = "" } - if (is_fat_secondary_toolchain) { - # For fat builds, only the default toolchain will generate a test bundle. - # For the other toolchains, the template is only used for building the - # arch-specific binary, thus the default target is just a group(). - group(_target_name) { - forward_variables_from(invoker, [ "visibility" ]) - testonly = true - - public_deps = [ ":$_arch_loadable_module_target" ] - } - - not_needed(invoker, "*") - } else { - _info_plist_target = _target_name + "_info_plist" - _info_plist_bundle = _target_name + "_info_plist_bundle" + _info_plist_target = _target_name + "_info_plist" + _info_plist_bundle = _target_name + "_info_plist_bundle" - # Bundle identifier should respect rfc1034, so replace "_" with "-". - _bundle_identifier = "$ios_app_bundle_id_prefix.chrome." + - string_replace(_output_name, "_", "-") + # Bundle identifier should respect rfc1034, so replace "_" with "-". + _bundle_identifier = "$ios_app_bundle_id_prefix.chrome." + + string_replace(_output_name, "_", "-") - ios_info_plist(_info_plist_target) { - testonly = true - visibility = [ ":$_info_plist_bundle" ] + ios_info_plist(_info_plist_target) { + testonly = true + visibility = [ ":$_info_plist_bundle" ] - info_plist = "//build/config/ios/Module-Info.plist" - executable_name = _output_name + info_plist = "//build/config/ios/Module-Info.plist" + executable_name = _output_name - if (defined(invoker.xctest_bundle_principal_class)) { - _principal_class = invoker.xctest_bundle_principal_class - } else { - # Fall back to a reasonable default value. - _principal_class = "NSObject" - } - extra_substitutions = [ - "XCTEST_BUNDLE_PRINCIPAL_CLASS=${_principal_class}", - "BUNDLE_IDENTIFIER=$_bundle_identifier", - ] + if (defined(invoker.xctest_bundle_principal_class)) { + _principal_class = invoker.xctest_bundle_principal_class + } else { + # Fall back to a reasonable default value. + _principal_class = "NSObject" } + extra_substitutions = [ + "XCTEST_BUNDLE_PRINCIPAL_CLASS=${_principal_class}", + "BUNDLE_IDENTIFIER=$_bundle_identifier", + ] + } - bundle_data(_info_plist_bundle) { - testonly = true - visibility = [ ":$_target_name" ] - - public_deps = [ ":$_info_plist_target" ] + bundle_data(_info_plist_bundle) { + testonly = true + visibility = [ ":$_target_name" ] - sources = get_target_outputs(":$_info_plist_target") - outputs = [ "{{bundle_contents_dir}}/Info.plist" ] - } + public_deps = [ ":$_info_plist_target" ] - lipo_binary(_lipo_loadable_module_target) { - forward_variables_from(invoker, [ "configs" ]) + sources = get_target_outputs(":$_info_plist_target") + outputs = [ "{{bundle_contents_dir}}/Info.plist" ] + } - testonly = true - visibility = [ ":$_target_name" ] + _xctest_bundle = _target_name + "_bundle" + create_signed_bundle(_target_name) { + forward_variables_from(invoker, + [ + "bundle_deps", + "bundle_deps_filter", + "bundle_id", + "data_deps", + "enable_code_signing", + "product_type", + "xcode_test_application_name", + ]) - output_name = _output_name - arch_binary_target = ":$_arch_loadable_module_target" - arch_binary_output = _output_name - } + testonly = true + visibility = [ ":$_xctest_bundle" ] - _xctest_bundle = _target_name + "_bundle" - create_signed_bundle(_target_name) { - forward_variables_from(invoker, - [ - "bundle_id", - "data_deps", - "enable_code_signing", - "product_type", - "xcode_test_application_name", - ]) + bundle_extension = ".xctest" - testonly = true - visibility = [ ":$_xctest_bundle" ] + output_name = _output_name + bundle_binary_target = ":$_loadable_module_target" + bundle_binary_output = _output_name - bundle_extension = ".xctest" + xcode_extra_attributes = { + IPHONEOS_DEPLOYMENT_TARGET = ios_deployment_target + PRODUCT_BUNDLE_IDENTIFIER = _bundle_identifier + CODE_SIGNING_REQUIRED = "NO" + CODE_SIGNING_ALLOWED = "NO" + CODE_SIGN_IDENTITY = "" + DONT_GENERATE_INFOPLIST_FILE = "YES" - output_name = _output_name - bundle_binary_target = ":$_lipo_loadable_module_target" - bundle_binary_output = _output_name + # For XCUITest, Xcode requires specifying the host application name + # via the TEST_TARGET_NAME attribute. + if (invoker.product_type == _ios_xcode_xcuitest_bundle_id) { + TEST_TARGET_NAME = invoker.xcode_test_application_name + } - xcode_extra_attributes = { - IPHONEOS_DEPLOYMENT_TARGET = ios_deployment_target - PRODUCT_BUNDLE_IDENTIFIER = _bundle_identifier - CODE_SIGNING_REQUIRED = "NO" - CODE_SIGNING_ALLOWED = "NO" - CODE_SIGN_IDENTITY = "" - DONT_GENERATE_INFOPLIST_FILE = "YES" - - # For XCUITest, Xcode requires specifying the host application name - # via the TEST_TARGET_NAME attribute. - if (invoker.product_type == _ios_xcode_xcuitest_bundle_id) { - TEST_TARGET_NAME = invoker.xcode_test_application_name + # For XCTest, Xcode requires specifying the host application path via + # both BUNDLE_LOADER and TEST_HOST attributes. + if (invoker.product_type == _ios_xcode_xctest_bundle_id) { + _xcode_app_name = invoker.xcode_test_application_name + if (defined(invoker.xcode_test_application_output_name)) { + _xcode_app_name = invoker.xcode_test_application_output_name } - # For XCTest, Xcode requires specifying the host application path via - # both BUNDLE_LOADER and TEST_HOST attributes. - if (invoker.product_type == _ios_xcode_xctest_bundle_id) { - _xcode_app_name = invoker.xcode_test_application_name - if (defined(invoker.xcode_test_application_output_name)) { - _xcode_app_name = invoker.xcode_test_application_output_name - } - - BUNDLE_LOADER = "\$(TEST_HOST)" - TEST_HOST = "\$(BUILT_PRODUCTS_DIR)/" + - "${_xcode_app_name}.app/${_xcode_app_name}" - } + BUNDLE_LOADER = "\$(TEST_HOST)" + TEST_HOST = "\$(BUILT_PRODUCTS_DIR)/" + + "${_xcode_app_name}.app/${_xcode_app_name}" } - - deps = [ ":$_info_plist_bundle" ] } - bundle_data(_xctest_bundle) { - forward_variables_from(invoker, [ "host_target" ]) + deps = [ ":$_info_plist_bundle" ] + } - testonly = true - visibility = [ ":$host_target" ] + bundle_data(_xctest_bundle) { + forward_variables_from(invoker, [ "host_target" ]) - public_deps = [ ":$_target_name" ] - sources = [ "$root_out_dir/$_output_name.xctest" ] - outputs = [ "{{bundle_contents_dir}}/PlugIns/$_output_name.xctest" ] - } + testonly = true + visibility = [ ":$host_target" ] + + public_deps = [ ":$_target_name" ] + sources = [ "$root_out_dir/$_output_name.xctest" ] + outputs = [ "{{bundle_contents_dir}}/PlugIns/$_output_name.xctest" ] } } @@ -1945,13 +1645,16 @@ template("ios_xctest_test") { ] } + # XCTestSupport framework is required as of Xcode 14.3 or later. + if (xcode_version_int >= 1430) { + extra_system_frameworks += [ "$ios_sdk_platform_path/Developer/Library/PrivateFrameworks/XCTestSupport.framework" ] + } + _xctest_bundle = _xctest_target + "_bundle" - if (!is_fat_secondary_toolchain) { - if (!defined(bundle_deps)) { - bundle_deps = [] - } - bundle_deps += [ ":$_xctest_bundle" ] + if (!defined(bundle_deps)) { + bundle_deps = [] } + bundle_deps += [ ":$_xctest_bundle" ] } } @@ -2087,6 +1790,11 @@ template("ios_xcuitest_test_runner_bundle") { ] } + # XCTestSupport framework is required as of Xcode 14.3 or later. + if (xcode_version_int >= 1430) { + extra_system_frameworks += [ "$ios_sdk_platform_path/Developer/Library/PrivateFrameworks/XCTestSupport.framework" ] + } + bundle_deps = [] if (defined(invoker.bundle_deps)) { bundle_deps += invoker.bundle_deps @@ -2111,6 +1819,12 @@ template("ios_xcuitest_test_runner_bundle") { # xcode_test_application_name: # string, name of the test application for the ui test target. # +# runner_only_bundle_deps: +# list of labels of bundle target to include in the runner and +# exclude from the test module (the use case is a framework bundle +# that is used by the test module and thus needs to be packaged in +# the runner application bundle) +# # This template defines two targets, one named "${target_name}_module" is the # xctest dynamic library, and the other named "${target_name}_runner" is the # test runner application bundle. @@ -2138,23 +1852,33 @@ template("ios_xcuitest_test") { ios_xctest_bundle(_xcuitest_module_target) { forward_variables_from(invoker, [ + "bundle_deps", + "data_deps", + "deps", "xcode_test_application_name", "xctest_bundle_principal_class", - "data_deps", ]) product_type = _ios_xcode_xcuitest_bundle_id host_target = _xcuitest_runner_target output_name = _xcuitest_module_output - deps = invoker.deps + if (defined(invoker.runner_only_bundle_deps)) { + bundle_deps_filter = invoker.runner_only_bundle_deps + } } _xcuitest_runner_output = _xcuitest_target + "-Runner" ios_xcuitest_test_runner_bundle(_xcuitest_runner_target) { output_name = _xcuitest_runner_output xctest_bundle = _xcuitest_module_target + "_bundle" - forward_variables_from(invoker, [ "bundle_deps" ]) + + if (defined(invoker.runner_only_bundle_deps)) { + if (!defined(bundle_deps)) { + bundle_deps = [] + } + bundle_deps += invoker.runner_only_bundle_deps + } } } diff --git a/build/config/linux/pkg_config.gni b/build/config/linux/pkg_config.gni index cb9b460..0d87390 100644 --- a/build/config/linux/pkg_config.gni +++ b/build/config/linux/pkg_config.gni @@ -101,7 +101,7 @@ template("pkg_config") { args += invoker.extra_args } - pkgresult = exec_script(pkg_config_script, args, "value") + pkgresult = exec_script(pkg_config_script, args, "json") cflags = pkgresult[1] foreach(include, pkgresult[0]) { diff --git a/build/config/loongarch64.gni b/build/config/loongarch64.gni new file mode 100644 index 0000000..32aedbc --- /dev/null +++ b/build/config/loongarch64.gni @@ -0,0 +1,13 @@ +# Copyright 2023 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/config/v8_target_cpu.gni") + +if (current_cpu == "loong64") { + declare_args() { + # LOONGARCH64 SIMD Arch compilation flag. + loongarch64_use_lsx = false + loongarch64_use_lasx = false + } +} diff --git a/build/config/mac/BUILD.gn b/build/config/mac/BUILD.gn index 8cfb277..7af3124 100644 --- a/build/config/mac/BUILD.gn +++ b/build/config/mac/BUILD.gn @@ -98,18 +98,6 @@ config("mac_dynamic_flags") { } } -# The ldflags referenced below are handled by -# //build/toolchain/apple/linker_driver.py. -# Remove this config if a target wishes to change the arguments passed to the -# strip command during linking. This config by default strips all symbols -# from a binary, but some targets may wish to specify an exports file to -# preserve specific symbols. -config("strip_all") { - if (enable_stripping) { - ldflags = [ "-Wcrl,strip,-x,-S" ] - } -} - # When building with Goma, all inputs must be relative to the build directory. # If using the system Xcode, which typically resides outside the build root, a # symlink to the SDK is created in the build directory, and the path to that diff --git a/build/config/mac/mac_sdk.gni b/build/config/mac/mac_sdk.gni index 5e1a523..546a27e 100644 --- a/build/config/mac/mac_sdk.gni +++ b/build/config/mac/mac_sdk.gni @@ -9,23 +9,32 @@ import("//build/toolchain/goma.gni") import("//build/toolchain/rbe.gni") import("//build/toolchain/toolchain.gni") -assert(current_os == "mac" || current_toolchain == default_toolchain) +assert( + current_os == "mac" || current_toolchain == default_toolchain || + (current_os == "ios" && current_toolchain == "${default_toolchain}_blink")) declare_args() { - # The `MACOSX_DEPLOYMENT_TARGET` variable used when compiling. This partially - # controls the minimum supported version of macOS for Chromium by - # affecting the symbol availability rules. This may differ from - # `mac_min_system_version` when dropping support for older macOSes but where - # additional code changes are required to be compliant with the availability - # rules. - mac_deployment_target = "10.13" - - # The value of the `LSMinimumSystemVersion` in `Info.plist` files. This - # partially controls the minimum supported version of macOS for Chromium by - # affecting the `Info.plist`. This may differ from `mac_deployment_target` - # when dropping support for older macOSes. This must be greater than or equal - # to the `mac_deployment_target` version. - mac_min_system_version = "10.13" + # The following two variables control the minimum supported version for + # macOS: + # + # This variable affects how Chromium is compiled and corresponds to the + # `MACOSX_DEPLOYMENT_TARGET` define. Changing this controls which symbols + # the macOS SDK marks as available (via `__builtin_available` and + # `@available`) and deprecated (producing a warning if called). Modifying + # this variable often requires additional code changes to handle differences + # in availability and deprecation, which is why it is often changed + # separately from `mac_min_system_version` when dropping support for older + # macOSes. + mac_deployment_target = "10.15" + + # The value of the `LSMinimumSystemVersion` in `Info.plist` files. This value + # controls the minimum OS version that may launch the application, and OS + # releases older than this will refuse to launch the application. When + # dropping support for older macOSes, this variable is often changed before + # `mac_deployment_target` to increase the system requirement without changing + # how Chromium is compiled. This must be greater than or equal to the + # `mac_deployment_target` version. + mac_min_system_version = "10.15" # Path to a specific version of the Mac SDK, not including a slash at the end. # If empty, the path to the lowest version greater than or equal to @@ -38,7 +47,7 @@ declare_args() { # The SDK version used when making official builds. This is a single exact # version, not a minimum. If this version isn't available official builds # will fail. - mac_sdk_official_version = "13.0" + mac_sdk_official_version = "13.3" # The SDK build version used when making official builds. This is a single # exact version found at "System/Library/CoreServices/SystemVersion.plist" diff --git a/build/config/mac/rules.gni b/build/config/mac/rules.gni index f613a04..b69b7b7 100644 --- a/build/config/mac/rules.gni +++ b/build/config/mac/rules.gni @@ -407,13 +407,6 @@ set_defaults("mac_framework_bundle") { # (optional) string, name of the generated app without the # .app suffix. If omitted, defaults to target_name. # -# extra_configs: -# (optional) list of label, additional configs to apply to the -# executable target. -# -# remove_configs: -# (optional) list of label, default configs to remove from the target. -# # extra_substitutions: # (optional) string array, 'key=value' pairs for extra fields which are # specified in a source Info.plist template. @@ -487,12 +480,6 @@ template("mac_app_bundle") { "output_name", "visibility", ]) - if (defined(extra_configs)) { - configs += extra_configs - } - if (defined(remove_configs)) { - configs -= remove_configs - } output_name = _output_name output_dir = "$target_out_dir/$_executable_target" } @@ -561,6 +548,10 @@ template("mac_app_bundle") { } } +set_defaults("mac_app_bundle") { + configs = default_executable_configs +} + # Template to package a loadable_module into a .plugin bundle. # # This takes no extra arguments that differ from a loadable_module. diff --git a/build/config/ozone.gni b/build/config/ozone.gni index 9eee45d..8bb512a 100644 --- a/build/config/ozone.gni +++ b/build/config/ozone.gni @@ -92,7 +92,7 @@ declare_args() { ozone_platform_wayland = true ozone_platform_x11 = true } else if (is_fuchsia) { - ozone_platform = "scenic" + ozone_platform = "flatland" ozone_platform_scenic = true ozone_platform_flatland = true } diff --git a/build/config/pch.gni b/build/config/pch.gni index 7d5b4bb..ee39ada 100644 --- a/build/config/pch.gni +++ b/build/config/pch.gni @@ -4,11 +4,12 @@ import("//build/toolchain/goma.gni") import("//build/toolchain/rbe.gni") +import("//build/toolchain/siso.gni") declare_args() { # Precompiled header file support is by default available, - # but for distributed build system uses (like goma or rbe) or when - # doing official builds. + # but for distributed build system uses (like goma, rbe, or siso) or when + # doing official builds it is off by default. # On Linux it slows down the build, so don't enable it by default. # PATCH(build-gn): pch is not supported yet. enable_precompiled_headers = false diff --git a/build/config/posix/BUILD.gn b/build/config/posix/BUILD.gn index c36a6c0..49bc72c 100644 --- a/build/config/posix/BUILD.gn +++ b/build/config/posix/BUILD.gn @@ -34,12 +34,12 @@ config("runtime_library") { # line, and build system rebuilds things when their commandline # changes). Nothing should ever read this define. # PATCH(build-gn): This breaks with custom sysroot scripts. - # sysroot_hash = + # sysroot_key = # exec_script("//build/linux/sysroot_scripts/install-sysroot.py", - # [ "--print-hash=$current_cpu" ], + # [ "--print-key=$current_cpu" ], # "trim string", # [ "//build/linux/sysroot_scripts/sysroots.json" ]) - # defines += [ "CR_SYSROOT_HASH=$sysroot_hash" ] + # defines += [ "CR_SYSROOT_KEY=$sysroot_key" ] } asmflags += sysroot_flags ldflags += sysroot_flags diff --git a/build/config/riscv.gni b/build/config/riscv.gni index b9597a0..5f93266 100644 --- a/build/config/riscv.gni +++ b/build/config/riscv.gni @@ -4,7 +4,8 @@ import("//build/config/v8_target_cpu.gni") -if (current_cpu == "riscv64" || v8_current_cpu == "riscv64") { +if (current_cpu == "riscv64" || v8_current_cpu == "riscv64" || + current_cpu == "riscv32" || v8_current_cpu == "riscv32") { declare_args() { # RISCV Vector extension compilation flag. riscv_use_rvv = false diff --git a/build/config/rust.gni b/build/config/rust.gni index b3e5011..d74ff44 100644 --- a/build/config/rust.gni +++ b/build/config/rust.gni @@ -11,56 +11,52 @@ if (is_android) { import("//build/config/android/config.gni") } -declare_args() { - # Whether to allow Rust code to be part of the Chromium *build process*. - # This can be used to create Rust test binaries, even if the flag below - # is false. - enable_rust = false +if (is_ios) { + import("//build/config/ios/config.gni") # For `target_environment` + import("//build/config/ios/ios_sdk.gni") # For `xcode_version_int` +} - # Individual Rust components. +declare_args() { + # Rust is available in the Chromium build but 3p repos that use //build may + # not use Rust and thus won't want to depend on having the Rust toolchain + # present, so this defaults to off in those cases. # - # The base::JSONReader implementation. - enable_rust_json = true + # Chromium-based projects that are built for for architectures Chrome does not + # support may need to disable this as well, though they may need to replace + # code with C/C++ to get a functional product. + # PATCH(build-gn): Do not have time to support rust yet. + enable_rust = false - # Support for chrome://crash-rust to check crash dump collection works. - enable_rust_crash = true + # As we incrementally enable Rust on mainstream builders, we want to enable + # the toolchain (by switching 'enable_rust' to true) while still disabling + # almost all Rust features). Yet we still want to have some builders with + # all Rust features enabled. + enable_all_rust_features = false - # Use experimental Rust toolchain built in-tree. See //tools/rust. For now, - # only use it for linux targets. The package only has prebuilt libs for linux. - # More targets will be added later. - # - # Ideally this should check `current_os` so that e.g. Android builds will use - # the Android toolchain for target artifacts and the Chromium Rust toolchain - # for host artifacts. Currently there is an std mixup in //build/rust/std that - # prevents this. + # Chromium provides a Rust toolchain in //third_party/rust-toolchain when + # checkout_rust is True (which is being rolled out by default over time). # - # TODO(https://crbug.com/1245714): fix std handling and check `current_os`. - use_chromium_rust_toolchain = target_os == "linux" && host_os == "linux" - - # Build libstd locally with GN and use that instead of the prebuilts, where - # applicable. If this is false the prebuilt libstd will always be used. If - # true, the local build is only used with the Chromium Rust toolchain and only - # on supported platforms and GN targets. - enable_local_libstd = true - - # Chromium currently has a Rust toolchain for Android and Linux, but - # if you wish to experiment on more platforms you can use this - # argument to specify an alternative toolchain. - # This should be an absolute path to a directory - # containing a 'bin' directory and others. Commonly + # To use a custom toolchain instead, specify an absolute path to the root of + # a Rust sysroot, which will have a 'bin' directory and others. Commonly # /.rustup/toolchains/nightly-- rust_sysroot_absolute = "" + # If you're using a Rust toolchain as specified by rust_sysroot_absolute, + # set this to the output of `rustc -V`. Changing this string will cause all + # Rust targets to be rebuilt, which allows you to update your toolchain and + # not break incremental builds. + rustc_version = "" + # If you're using a Rust toolchain as specified by rust_sysroot_absolute, # you can specify whether it supports nacl here. rust_toolchain_supports_nacl = false # Any extra std rlibs in your Rust toolchain, relative to the standard - # Rust toolchain. Typically used with 'use_unverified_rust_toolchain' = true + # Rust toolchain. Typically used with 'rust_sysroot_absolute' added_rust_stdlib_libs = [] # Any removed std rlibs in your Rust toolchain, relative to the standard - # Rust toolchain. Typically used with 'use_unverified_rust_toolchain' = true + # Rust toolchain. Typically used with 'rust_sysroot_absolute' removed_rust_stdlib_libs = [] # Non-rlib libs provided in the toolchain sysroot. Usually this is empty, but @@ -72,41 +68,81 @@ declare_args() { # more work is done. use_goma_rust = false - # The host toolchain to use when you don't want sanitizers enabled. By default - # it is the regular toolchain, but when that toolchain has sanitizers, then - # this variable is changed to avoid them. - host_toolchain_no_sanitizers = host_toolchain + # Force-enable `--color=always` for rustc, even when it would be disabled for + # a platform. Mostly applicable to Windows, where new versions can handle ANSI + # escape sequences but it's not reliable in general. + force_rustc_color_output = false } -# Platform support for "official" toolchains (Android or Chromium) -android_toolchain_supports_platform = - (!is_nacl && - (is_android && (current_cpu == "arm" || current_cpu == "arm64" || - current_cpu == "x64" || current_cpu == "x86"))) || - (is_linux && current_cpu == "x64") -chromium_toolchain_supports_platform = - !is_nacl && is_linux && current_cpu == "x64" +# Use a separate declare_args so these variables' defaults can depend on the +# ones above. +declare_args() { + # Individual Rust components. + + # Conversions between Rust types and C++ types. + # + # TODO(crbug.com/1463749): Enable on ChromeOS. + enable_rust_base_conversions = + enable_rust && (!(is_chromeos || is_ios) || enable_all_rust_features) + + # The base::JSONReader implementation. Requires base conversions. + enable_rust_json = enable_rust && enable_all_rust_features + + # Support for chrome://crash-rust to check crash dump collection works. + enable_rust_crash = enable_rust + + # Support for QR code generation - see https://crbug.com/1431991. + # + # Per go/rusty-qr-code-generator the feature is not actually used on iOS, but + # `is_ios` below is checked for parity with `enable_rust_base_conversions` + # (which is a dependency of `enable_rust_qr`). + # + # TODO(crbug.com/1463749): Enable on ChromeOS. + enable_rust_qr = + enable_rust && (!(is_chromeos || is_ios) || enable_all_rust_features) + + # Support for Rust mojo bindings. + enable_rust_mojo = enable_rust && enable_all_rust_features + + # Rust gtest interop. + enable_rust_gtest_interop = enable_rust + + # Enable Boringssl Rust bindings generation + enable_rust_boringssl = enable_rust && enable_all_rust_features +} + +# Use the Rust toolchain built in-tree. When false, we use the prebuilt Rust +# stdlibs that come with the specified custom toolchain. +use_chromium_rust_toolchain = rust_sysroot_absolute == "" + +# Platform support for the Rust toolchain. +chromium_toolchain_supports_platform = !is_nacl custom_toolchain_supports_platform = !is_nacl || rust_toolchain_supports_nacl -toolchain_has_rust = - enable_rust && - ((use_chromium_rust_toolchain && chromium_toolchain_supports_platform) || - (!use_chromium_rust_toolchain && android_toolchain_supports_platform) || - (rust_sysroot_absolute != "" && custom_toolchain_supports_platform)) +# Not all target triples (GN toolchains) are supported by the Rust compiler. +# Define if we support the current GN toolchain. +toolchain_has_rust = false # The rustc_revision is used to introduce a dependency on the toolchain version # (so e.g. rust targets are rebuilt, and the standard library is re-copied when # the toolchain changes). It is left empty for custom toolchains. rustc_revision = "" -if (toolchain_has_rust && rust_sysroot_absolute == "") { + +if (enable_rust) { if (use_chromium_rust_toolchain) { - update_rust_args = [ "--print-package-version" ] - rustc_revision = exec_script("//tools/rust/update_rust.py", - update_rust_args, - "trim string") + toolchain_has_rust = chromium_toolchain_supports_platform + if (toolchain_has_rust) { + update_rust_args = [ "--print-package-version" ] + rustc_revision = exec_script("//tools/rust/update_rust.py", + update_rust_args, + "trim string") + } + + # The same as written in `config.toml.template`. + rust_channel = "dev" } else { - # Android toolchain version. - rustc_revision = "rustc 1.64.0-dev (Android Rust Toolchain version 9099361)" + toolchain_has_rust = custom_toolchain_supports_platform + rustc_revision = rustc_version } } @@ -115,35 +151,20 @@ if (toolchain_has_rust && rust_sysroot_absolute == "") { # for gtests from the `//testing/test:test` template. can_build_rust_unit_tests = toolchain_has_rust && !is_android -# Whether to build chrome://crash/rust support. -build_rust_crash = toolchain_has_rust && enable_rust_crash - # We want to store rust_sysroot as a source-relative variable for ninja # portability. In practice if an external toolchain was specified, it might # be an absolute path, but we'll do our best. if (enable_rust) { - if (rust_sysroot_absolute != "") { - rust_sysroot = get_path_info(rust_sysroot_absolute, "abspath") - use_unverified_rust_toolchain = true - } else if (use_chromium_rust_toolchain) { - if (host_os != "linux") { - assert( - false, - "Attempt to use Chromium Rust toolchain on an unsupported platform") - } - + if (use_chromium_rust_toolchain) { rust_sysroot = "//third_party/rust-toolchain" - use_unverified_rust_toolchain = false } else { - if (host_os != "linux") { - assert(false, - "Attempt to use Android Rust toolchain on an unsupported platform") - } - - rust_sysroot = "//third_party/android_rust_toolchain/toolchain" - use_unverified_rust_toolchain = false - extra_sysroot_libs += [ "libunwind.a" ] + rust_sysroot = get_path_info(rust_sysroot_absolute, "abspath") } + + # Prebuilt toolchains won't come with bindgen, so we unconditionally use the + # bindgen we ship with the Rust toolchain. This could be made configurable + # if folks want to supply a bindgen with their toolchain. + rust_bindgen_root = "//third_party/rust-toolchain" } # Figure out the Rust target triple (aka 'rust_abi_target') @@ -158,14 +179,29 @@ if (enable_rust) { # (see '*_toolchain_supports_platform above') to enable experimentation with # other toolchains. rust_abi_target = "" -if (is_linux) { - cpu = current_cpu - if (cpu == "arm64") { - cpu = "aarch64" - } else if (cpu == "x64") { - cpu = "x86_64" +if (is_linux || is_chromeos) { + if (current_cpu == "arm64") { + rust_abi_target = "aarch64-unknown-linux-gnu" + } else if (current_cpu == "x86") { + rust_abi_target = "i686-unknown-linux-gnu" + } else if (current_cpu == "x64") { + rust_abi_target = "x86_64-unknown-linux-gnu" + } else if (current_cpu == "arm") { + if (arm_float_abi == "hard") { + float_suffix = "hf" + } else { + float_suffix = "" + } + if (arm_arch == "armv7-a" || arm_arch == "armv7") { + # No way to inform Rust about the -a suffix. + rust_abi_target = "armv7-unknown-linux-gnueabi" + float_suffix + } else { + rust_abi_target = "arm-unknown-linux-gnueabi" + float_suffix + } + } else { + # Best guess for other future platforms. + rust_abi_target = current_cpu + "-unknown-linux-gnu" } - rust_abi_target = cpu + "-unknown-linux-gnu" } else if (is_android) { import("//build/config/android/abi.gni") rust_abi_target = android_abi_target @@ -184,7 +220,13 @@ if (is_linux) { } } else if (is_ios) { if (current_cpu == "arm64") { - rust_abi_target = "aarch64-apple-ios" + if (target_environment == "simulator") { + rust_abi_target = "aarch64-apple-ios-sim" + } else if (target_environment == "catalyst") { + rust_abi_target = "aarch64-apple-ios-macabi" + } else { + rust_abi_target = "aarch64-apple-ios" + } } else if (current_cpu == "arm") { # There's also an armv7s-apple-ios, which targets a more recent ARMv7 # generation CPU found in later iPhones. We'll go with the older one for @@ -192,14 +234,34 @@ if (is_linux) { # with Rust, we might want to be more precise here. rust_abi_target = "armv7-apple-ios" } else if (current_cpu == "x64") { - rust_abi_target = "x86_64-apple-ios" + if (target_environment == "catalyst") { + rust_abi_target = "x86_64-apple-ios-macabi" + } else { + rust_abi_target = "x86_64-apple-ios" + } } else if (current_cpu == "x86") { rust_abi_target = "i386-apple-ios" } else { assert(false, "Architecture not supported") } +} else if (is_mac) { + if (current_cpu == "arm64") { + rust_abi_target = "aarch64-apple-darwin" + } else if (current_cpu == "x64") { + rust_abi_target = "x86_64-apple-darwin" + } else { + assert(false, "Architecture not supported") + } } else if (is_win) { - rust_abi_target = "x86_64-pc-windows-msvc" + if (current_cpu == "arm64") { + rust_abi_target = "aarch64-pc-windows-msvc" + } else if (current_cpu == "x64") { + rust_abi_target = "x86_64-pc-windows-msvc" + } else if (current_cpu == "x86") { + rust_abi_target = "i686-pc-windows-msvc" + } else { + assert(false, "Architecture not supported") + } } assert(!toolchain_has_rust || rust_abi_target != "") @@ -228,9 +290,6 @@ if (current_cpu == "x86") { assert(!toolchain_has_rust || rust_target_arch != "") -# Determine whether the local libstd can and should be built. -local_libstd_supported = enable_local_libstd && use_chromium_rust_toolchain - # Arguments for Rust invocation. # This is common between gcc/clang, Mac and Windows toolchains so specify once, # here. This is not the complete command-line: toolchains should add -o @@ -238,13 +297,20 @@ local_libstd_supported = enable_local_libstd && use_chromium_rust_toolchain rustc_common_args = "--crate-name {{crate_name}} {{source}} --crate-type {{crate_type}} {{rustflags}}" # Rust procedural macros are shared objects loaded into a prebuilt host rustc -# binary. To build them, we obviously need to build for the host. Not only that, -# but because the host rustc is prebuilt, it lacks the machinery to be able to -# load shared objects built using sanitizers (ASAN etc.) For that reason, we need -# to use a host toolchain that lacks sanitizers. This is only strictly necessary -# for procedural macros, but we may also choose to build standalone Rust host -# executable tools using the same toolchain, as they're likely to depend upon -# similar dependencies (syn, quote etc.) and it saves a little build time. -if (using_sanitizer || toolchain_disables_sanitizers) { - host_toolchain_no_sanitizers = "${host_toolchain}_no_sanitizers" +# binary. To build them, we obviously need to build for the host. Not only +# that, but because the host rustc is prebuilt, it lacks the machinery to be +# able to load shared objects built using sanitizers (ASAN etc.). For that +# reason, we need to use a host toolchain that lacks sanitizers. Additionally, +# proc macros should use panic=unwind, which means they need a stdlib that is +# compiled the same way, as is the stdlib that we ship with the compiler. +if (toolchain_for_rust_host_build_tools) { + rust_macro_toolchain = current_toolchain +} else { + rust_macro_toolchain = "${host_toolchain}_for_rust_host_build_tools" } + +# When this is true, a prebuilt Rust stdlib will be used. This has implications +# such as that the panic strategy (unwind, abort) must match how the stdlib is +# compiled, which is typically as unwind. +rust_prebuilt_stdlib = + !use_chromium_rust_toolchain || toolchain_for_rust_host_build_tools diff --git a/build/config/sanitizers/BUILD.gn b/build/config/sanitizers/BUILD.gn index b80e2e2..a3426ea 100644 --- a/build/config/sanitizers/BUILD.gn +++ b/build/config/sanitizers/BUILD.gn @@ -45,6 +45,9 @@ group("deps") { deps += [ "//third_party/instrumented_libraries:deps" ] } } + if (fail_on_san_warnings) { + data += [ "//tools/memory/sanitizer/escalate_sanitizer_warnings.py" ] + } if (is_asan) { if (is_win || is_apple) { data_deps = [ ":copy_asan_runtime" ] @@ -53,6 +56,12 @@ group("deps") { public_deps = [ ":asan_runtime_bundle_data" ] } } + if (use_centipede) { + # For executables which aren't actual fuzzers, we need stubs for + # the sanitizer coverage symbols, because we'll still be generating + # .o files which depend on them. + deps += [ "//third_party/fuzztest:centipede_weak_sancov_stubs" ] + } } assert(!(is_win && is_asan && current_cpu == "x86"), @@ -113,7 +122,7 @@ static_library("options_sources") { # unconditionally linked into targets. visibility = [ ":deps", - "//:gn_visibility", + "//:gn_all", ] sources = [ "//build/sanitizers/sanitizer_options.cc" ] @@ -156,7 +165,9 @@ config("default_sanitizer_ldflags") { ] if (is_posix || is_fuchsia) { - sanitizers = [] + sanitizers = [] # sanitizers applicable to both clang and rustc + ldflags = [] + rustflags = [] if (is_asan) { sanitizers += [ "address" ] } @@ -164,7 +175,10 @@ config("default_sanitizer_ldflags") { sanitizers += [ "hwaddress" ] } if (is_lsan) { - sanitizers += [ "leak" ] + # In Chromium, is_lsan always implies is_asan. ASAN includes LSAN. + # It seems harmless to pass both options to clang, but it doesn't + # work on rustc, so apply this option to clang only. + ldflags += [ "-fsanitize=leak" ] } if (is_tsan) { sanitizers += [ "thread" ] @@ -173,13 +187,11 @@ config("default_sanitizer_ldflags") { sanitizers += [ "memory" ] } if (is_ubsan || is_ubsan_security) { - sanitizers += [ "undefined" ] + ldflags += [ "-fsanitize=undefined" ] } if (is_ubsan_vptr) { - sanitizers += [ "vptr" ] + ldflags += [ "-fsanitize=vptr" ] } - ldflags = [] - rustflags = [] foreach(sanitizer, sanitizers) { ldflags += [ "-fsanitize=$sanitizer" ] rustflags += [ "-Zsanitizer=$sanitizer" ] @@ -268,6 +280,13 @@ config("asan_flags") { cflags = [] if (is_asan) { cflags += [ "-fsanitize=address" ] + if (!is_win && !is_apple && !is_fuchsia) { + # TODO(crbug.com/1459233, crbug.com/1462248): This causes asan + # odr-violation errors in rust code, and link failures for cros/asan. + # Clang recently turned it on by default for all ELF targets (it was + # already on for Fuchsia). Pass the flag to turn it back off. + cflags += ["-fno-sanitize-address-globals-dead-stripping"] + } if (is_win) { if (!defined(asan_win_blocklist_path)) { asan_win_blocklist_path = @@ -294,6 +313,7 @@ config("link_shared_library") { config("cfi_flags") { cflags = [] + rustflags = [] if (is_cfi && current_toolchain == default_toolchain) { if (!defined(cfi_ignorelist_path)) { cfi_ignorelist_path = @@ -304,6 +324,15 @@ config("cfi_flags") { "-fsanitize-ignorelist=$cfi_ignorelist_path", ] + # sanitize=cfi implies -fsplit-lto-unit, and Rust needs to match + # behaviour. Rust needs to know the linker will be doing LTO in this case + # or it rejects the Zsplit-lto-unit flag. + # TODO(crbug.com/1442331): Add -Zsanitize=cfi instead. + rustflags += [ + "-Zsplit-lto-unit", + "-Clinker-plugin-lto=yes", + ] + if (use_cfi_cast) { cflags += [ "-fsanitize=cfi-derived-cast", @@ -313,6 +342,10 @@ config("cfi_flags") { if (use_cfi_icall) { cflags += [ "-fsanitize=cfi-icall" ] + # TODO(crbug.com/1442331): Add cflags += [ + # "-fsanitize-cfi-icall-experimental-normalize-integers" ] + # TODO(crbug.com/1442331): Add rustflags += [ + # "-Zsanitizer-cfi-normalize-integers" ]. } if (use_cfi_diag) { diff --git a/build/config/sanitizers/sanitizers.gni b/build/config/sanitizers/sanitizers.gni index 7bfbe6f..1123559 100644 --- a/build/config/sanitizers/sanitizers.gni +++ b/build/config/sanitizers/sanitizers.gni @@ -67,6 +67,10 @@ declare_args() { # See http://www.chromium.org/developers/testing/libfuzzer use_libfuzzer = false + # Compile for fuzzing with centipede. + # See https://github.com/google/centipede + use_centipede = false + # Compile for fuzzing with AFL. use_afl = false @@ -102,6 +106,9 @@ declare_args() { # When true, seed corpora archives are built. archive_seed_corpus = true + + # When true, sanitizer warnings will cause test case failures. + fail_on_san_warnings = false } declare_args() { @@ -117,8 +124,9 @@ declare_args() { assert(!is_hwasan || (target_os == "android" && target_cpu == "arm64"), "HWASan only supported on Android ARM64 builds.") -# Disable sanitizers for non-target toolchains. -if (!is_a_target_toolchain || toolchain_disables_sanitizers) { +# Disable sanitizers for non-target toolchains, and for the toolchain using +# the prebuilt Rust stdlib which has no sanitizer support with it. +if (!is_a_target_toolchain || toolchain_for_rust_host_build_tools) { is_asan = false is_cfi = false is_hwasan = false @@ -129,9 +137,11 @@ if (!is_a_target_toolchain || toolchain_disables_sanitizers) { is_ubsan_no_recover = false is_ubsan_security = false is_ubsan_vptr = false + fail_on_san_warnings = false msan_track_origins = 0 sanitizer_coverage_flags = "" use_afl = false + use_centipede = false use_cfi_diag = false use_cfi_recover = false use_libfuzzer = false @@ -149,8 +159,18 @@ 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". -use_fuzzing_engine = use_libfuzzer || use_afl || use_external_fuzzing_engine +# check for "use_afl", and "use_centipede" is new. +use_fuzzing_engine = + use_libfuzzer || use_afl || use_centipede || use_external_fuzzing_engine + +# Whether the current fuzzing engine supports libprotobuf_mutator. Right now +# this is just libfuzzer, but others are likely to support this in future, +# so it's preferable to check this. +use_fuzzing_engine_with_lpm = use_libfuzzer || use_centipede + +# Whether the fuzzing engine supports fuzzers which supply their own +# "main" function. +fuzzing_engine_supports_custom_main = use_libfuzzer || use_centipede # Args that are in turn dependent on other args must be in a separate # declare_args block. User overrides are only applied at the end of a @@ -177,6 +197,16 @@ declare_args() { if (use_fuzzing_engine && sanitizer_coverage_flags == "") { sanitizer_coverage_flags = "trace-pc-guard" + if (use_centipede) { + # Centipede's minimal flags are listed in //third_party/centipede/src/clang-flags.txt. + # But, for users like Chromium using an up-to-date clang, we can also + # enable extra optional types of coverage which may make Centipede more + # effective. This list is not currently documented and has been derived + # from discussion with centipede creators (though one is warned about at + # https://github.com/google/centipede/blob/main/centipede_callbacks.cc#L68) + sanitizer_coverage_flags = sanitizer_coverage_flags + + ",pc-table,trace-cmp,control-flow,trace-loads" + } } else if (use_sanitizer_coverage && sanitizer_coverage_flags == "") { sanitizer_coverage_flags = "trace-pc-guard,indirect-calls" } @@ -283,3 +313,22 @@ if (use_fuzzing_engine) { } } } + +# Options common to different fuzzer engines. +# Engine should be compiled without coverage (infinite loop in trace_cmp). +fuzzing_engine_remove_configs = [ + "//build/config/coverage:default_coverage", + "//build/config/sanitizers:default_sanitizer_flags", +] + +# Add any sanitizer flags back. In MSAN builds, instrumenting libfuzzer with +# MSAN is necessary since all parts of the binary need to be instrumented for it +# to work. ASAN builds are more subtle: libfuzzer depends on features from the +# C++ STL. If it were not instrumented, templates would be insantiated without +# ASAN from libfuzzer and with ASAN in other TUs. The linker might merge +# instrumented template instantiations with non-instrumented ones (which could +# have a different ABI) in the final binary, which is problematic for TUs +# expecting one particular ABI (https://crbug.com/915422). The other sanitizers +# are added back for the same reason. +fuzzing_engine_add_configs = + [ "//build/config/sanitizers:default_sanitizer_flags_but_coverage" ] diff --git a/build/config/siso/.gitignore b/build/config/siso/.gitignore new file mode 100644 index 0000000..522449b --- /dev/null +++ b/build/config/siso/.gitignore @@ -0,0 +1 @@ +/.sisoenv diff --git a/build/config/siso/OWNERS b/build/config/siso/OWNERS new file mode 100644 index 0000000..03122b7 --- /dev/null +++ b/build/config/siso/OWNERS @@ -0,0 +1,6 @@ +# All current members of the Chrome Build Team. +jwata@google.com +philwo@google.com +richardwa@google.com +tikuta@chromium.org +ukai@google.com diff --git a/build/config/siso/PRESUBMIT.py b/build/config/siso/PRESUBMIT.py new file mode 100644 index 0000000..a7d12d3 --- /dev/null +++ b/build/config/siso/PRESUBMIT.py @@ -0,0 +1,29 @@ +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +PRESUBMIT_VERSION = '2.0.0' + + +def CheckTryjobFooters(input_api, output_api): + """Check if footers include Cq-Include-Trybots to trigger Siso tryjobs.""" + footerTryjobs = input_api.change.GitFootersFromDescription().get( + 'Cq-Include-Trybots', []) + if footerTryjobs: + return [] + + message = ( + "Missing 'Cq-Include-Trybots:' field required for Siso config changes" + "\nPlease add the following fields to run Siso tryjobs.\n\n" + "Cq-Include-Trybots: luci.chromium.try:android-12-x64-siso-rel\n" + "Cq-Include-Trybots: luci.chromium.try:android-arm64-siso-rel\n" + "Cq-Include-Trybots: luci.chromium.try:android-nougat-x86-siso-rel\n" + "Cq-Include-Trybots: luci.chromium.try:fuchsia-x64-cast-receiver-siso-rel\n" + "Cq-Include-Trybots: luci.chromium.try:linux-chromeos-siso-rel\n" + "Cq-Include-Trybots: luci.chromium.try:linux-lacros-siso-rel\n" + "Cq-Include-Trybots: luci.chromium.try:linux-siso-rel\n" + "Cq-Include-Trybots: luci.chromium.try:linux-wayland-siso-rel\n" + "Cq-Include-Trybots: luci.chromium.try:linux-wayland-siso-rel\n" + "Cq-Include-Trybots: luci.chromium.try:linux_chromium_asan_siso_rel_ng\n" + "Cq-Include-Trybots: luci.chromium.try:win-siso-rel\n") + return [output_api.PresubmitPromptWarning(message)] diff --git a/build/config/siso/README.md b/build/config/siso/README.md new file mode 100644 index 0000000..ff38eba --- /dev/null +++ b/build/config/siso/README.md @@ -0,0 +1,8 @@ +# Build config for Siso + +This directory contains configurations for +[siso](https://chromium.googlesource.com/infra/infra/+/refs/heads/main/go/src/infra/build/siso/) +build tool. + +Please refer to [the config specifications](https://chromium.googlesource.com/infra/infra/+/refs/heads/main/go/src/infra/build/siso/docs/starlark_config.md) in the Siso repo. + diff --git a/build/config/siso/android.star b/build/config/siso/android.star new file mode 100644 index 0000000..c2c108d --- /dev/null +++ b/build/config/siso/android.star @@ -0,0 +1,410 @@ +# -*- bazel-starlark -*- +# Copyright 2023 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. +"""Siso configuration for Android builds.""" + +load("@builtin//encoding.star", "json") +load("@builtin//lib/gn.star", "gn") +load("@builtin//struct.star", "module") +load("./config.star", "config") + +def __enabled(ctx): + if "args.gn" in ctx.metadata: + gn_args = gn.parse_args(ctx.metadata["args.gn"]) + if gn_args.get("target_os") == '"android"': + return True + return False + +def __step_config(ctx, step_config): + __input_deps(ctx, step_config["input_deps"]) + + remote_run = True # Turn this to False when you do file access trace. + step_config["rules"].extend([ + # See also https://chromium.googlesource.com/chromium/src/build/+/HEAD/android/docs/java_toolchain.md + { + "name": "android/write_build_config", + "command_prefix": "python3 ../../build/android/gyp/write_build_config.py", + "handler": "android_write_build_config", + "remote": remote_run, + "canonicalize_dir": True, + "timeout": "2m", + }, + { + "name": "android/ijar", + "command_prefix": "python3 ../../build/android/gyp/ijar.py", + "remote": remote_run, + "canonicalize_dir": True, + "timeout": "2m", + }, + { + "name": "android/turbine", + "command_prefix": "python3 ../../build/android/gyp/turbine.py", + "handler": "android_turbine", + # TODO(crrev.com/c/4596899): Add Java inputs in GN config. + "inputs": [ + "third_party/jdk/current/bin/java", + "third_party/android_sdk/public/platforms/android-34/android.jar", + "third_party/android_sdk/public/platforms/android-34/optional/android.test.base.jar", + "third_party/android_sdk/public/platforms/android-34/optional/org.apache.http.legacy.jar", + ], + "outputs_map": { + # Slow actions that exceed deadline on the default worker pool. + "./obj/chrome/android/chrome_test_java.turbine.jar": {"platform_ref": "large"}, + }, + # TODO(b/284252142): Run turbine actions locally by default because it slows down developer builds. + "remote": config.get(ctx, "remote_all"), + "platform_ref": "large", + "canonicalize_dir": True, + "timeout": "2m", + }, + { + "name": "android/compile_resources", + "command_prefix": "python3 ../../build/android/gyp/compile_resources.py", + "handler": "android_compile_resources", + "inputs": [ + "third_party/protobuf/python/google:pyprotolib", + ], + "exclude_input_patterns": [ + "*.h", + "*.o", + "*.cc", + "*.a", + "*.info", + "*.pak", + "*.inc", + ], + "remote": remote_run, + "canonicalize_dir": True, + "timeout": "5m", + }, + { + "name": "android/compile_java", + "command_prefix": "python3 ../../build/android/gyp/compile_java.py", + "handler": "android_compile_java", + # TODO(crrev.com/c/4596899): Add Java inputs in GN config. + "inputs": [ + "third_party/jdk/current/bin/javac", + "third_party/android_sdk/public/platforms/android-34/optional/android.test.base.jar", + "third_party/android_sdk/public/platforms/android-34/optional/org.apache.http.legacy.jar", + ], + # Don't include files under --generated-dir. + # This is probably optimization for local incrmental builds. + # However, this is harmful for remote build cache hits. + "ignore_extra_input_pattern": ".*srcjars.*\\.java", + "ignore_extra_output_pattern": ".*srcjars.*\\.java", + "remote": remote_run, + "platform_ref": "large", + "canonicalize_dir": True, + "timeout": "2m", + }, + { + "name": "android/dex", + "command_prefix": "python3 ../../build/android/gyp/dex.py", + "handler": "android_dex", + # TODO(crrev.com/c/4596899): Add Java inputs in GN config. + "inputs": [ + "third_party/jdk/current/bin/java", + "third_party/android_sdk/public/platforms/android-34/android.jar", + "third_party/android_sdk/public/platforms/android-34/optional/android.test.base.jar", + "third_party/android_sdk/public/platforms/android-34/optional/org.apache.http.legacy.jar", + ], + # TODO(crbug.com/1452038): include only required jar, dex files in GN config. + "indirect_inputs": { + "includes": ["*.dex", "*.ijar.jar", "*.turbine.jar"], + }, + # *.dex files are intermediate files used in incremental builds. + # Fo remote actions, let's ignore them, assuming remote cache hits compensate. + "ignore_extra_input_pattern": ".*\\.dex", + "ignore_extra_output_pattern": ".*\\.dex", + # TODO(b/284252142): Run dex actions locally by default because it slows down developer builds. + "remote": config.get(ctx, "remote_all"), + "platform_ref": "large", + "canonicalize_dir": True, + "timeout": "2m", + }, + { + "name": "android/filter_zip", + "command_prefix": "python3 ../../build/android/gyp/filter_zip.py", + "remote": remote_run, + "canonicalize_dir": True, + "timeout": "2m", + }, + ]) + return step_config + +def __filearg(ctx, arg): + fn = "" + if arg.startswith("@FileArg("): + f = arg.removeprefix("@FileArg(").removesuffix(")").split(":") + fn = f[0].removesuffix("[]") # [] suffix controls expand list? + v = json.decode(str(ctx.fs.read(ctx.fs.canonpath(fn)))) + for k in f[1:]: + v = v[k] + arg = v + if type(arg) == "string": + if arg.startswith("["): + return fn, json.decode(arg) + return fn, [arg] + return fn, arg + +def __android_compile_resources_handler(ctx, cmd): + # Script: + # https://crsrc.org/c/build/android/gyp/compile_resources.py + # GN Config: + # https://crsrc.org/c/build/config/android/internal_rules.gni;l=2163;drc=1b15af251f8a255e44f2e3e3e7990e67e87dcc3b + # https://crsrc.org/c/build/config/android/system_image.gni;l=58;drc=39debde76e509774287a655285d8556a9b8dc634 + # Sample args: + # --aapt2-path ../../third_party/android_build_tools/aapt2/aapt2 + # --android-manifest gen/chrome/android/trichrome_library_system_stub_apk__manifest.xml + # --arsc-package-name=org.chromium.trichromelibrary + # --arsc-path obj/chrome/android/trichrome_library_system_stub_apk.ap_ + # --debuggable + # --dependencies-res-zip-overlays=@FileArg\(gen/chrome/android/webapk/shell_apk/maps_go_webapk.build_config.json:deps_info:dependency_zip_overlays\) + # --dependencies-res-zips=@FileArg\(gen/chrome/android/webapk/shell_apk/maps_go_webapk.build_config.json:deps_info:dependency_zips\) + # --depfile gen/chrome/android/webapk/shell_apk/maps_go_webapk__compile_resources.d + # --emit-ids-out=gen/chrome/android/webapk/shell_apk/maps_go_webapk__compile_resources.resource_ids + # --extra-res-packages=@FileArg\(gen/chrome/android/webapk/shell_apk/maps_go_webapk.build_config.json:deps_info:extra_package_names\) + # --include-resources(=)../../third_party/android_sdk/public/platforms/android-34/android.jar + # --info-path obj/chrome/android/webapk/shell_apk/maps_go_webapk.ap_.info + # --min-sdk-version=24 + # --proguard-file obj/chrome/android/webapk/shell_apk/maps_go_webapk/maps_go_webapk.resources.proguard.txt + # --r-text-out gen/chrome/android/webapk/shell_apk/maps_go_webapk__compile_resources_R.txt + # --rename-manifest-package=org.chromium.trichromelibrary + # --srcjar-out gen/chrome/android/webapk/shell_apk/maps_go_webapk__compile_resources.srcjar + # --target-sdk-version=33 + # --version-code 1 + # --version-name Developer\ Build + # --webp-cache-dir=obj/android-webp-cache + inputs = [] + for i, arg in enumerate(cmd.args): + if arg in ["--aapt2-path", "--include-resources"]: + inputs.append(ctx.fs.canonpath(cmd.args[i + 1])) + if arg.startswith("--include-resources="): + inputs.append(ctx.fs.canonpath(arg.removeprefix("--include-resources="))) + for k in ["--dependencies-res-zips=", "--dependencies-res-zip-overlays=", "--extra-res-packages="]: + if arg.startswith(k): + arg = arg.removeprefix(k) + fn, v = __filearg(ctx, arg) + if fn: + inputs.append(ctx.fs.canonpath(fn)) + for f in v: + f = ctx.fs.canonpath(f) + inputs.append(f) + if k == "--dependencies-res-zips=" and ctx.fs.exists(f + ".info"): + inputs.append(f + ".info") + + ctx.actions.fix( + inputs = cmd.inputs + inputs, + ) + +def __android_compile_java_handler(ctx, cmd): + # Script: + # https://crsrc.org/c/build/android/gyp/compile_java.py + # GN Config: + # https://crsrc.org/c/build/config/android/internal_rules.gni;l=2995;drc=775b3a9ebccd468c79592dad43ef46632d3a411f + # Sample args: + # --depfile=gen/chrome/android/chrome_test_java__compile_java.d + # --generated-dir=gen/chrome/android/chrome_test_java/generated_java + # --jar-path=obj/chrome/android/chrome_test_java.javac.jar + # --java-srcjars=\[\"gen/chrome/browser/tos_dialog_behavior_generated_enum.srcjar\",\ \"gen/chrome/android/chrome_test_java__assetres.srcjar\",\ \"gen/chrome/android/chrome_test_java.generated.srcjar\"\] + # --target-name //chrome/android:chrome_test_java__compile_java + # --classpath=@FileArg\(gen/chrome/android/chrome_test_java.build_config.json:android:sdk_interface_jars\) + # --header-jar obj/chrome/android/chrome_test_java.turbine.jar + # --classpath=\[\"obj/chrome/android/chrome_test_java.turbine.jar\"\] + # --classpath=@FileArg\(gen/chrome/android/chrome_test_java.build_config.json:deps_info:javac_full_interface_classpath\) + # --kotlin-jar-path=obj/chrome/browser/tabmodel/internal/java.kotlinc.jar + # --chromium-code=1 + # --warnings-as-errors + # --jar-info-exclude-globs=\[\"\*/R.class\",\ \"\*/R\\\$\*.class\",\ \"\*/Manifest.class\",\ \"\*/Manifest\\\$\*.class\",\ \"\*/\*GEN_JNI.class\"\] + # @gen/chrome/android/chrome_test_java.sources + + out = cmd.outputs[0] + outputs = [ + out + ".md5.stamp", + ] + + inputs = [] + for i, arg in enumerate(cmd.args): + # read .sources file. + if arg.startswith("@"): + sources = str(ctx.fs.read(ctx.fs.canonpath(arg.removeprefix("@")))).splitlines() + inputs += sources + for k in ["--java-srcjars=", "--classpath=", "--bootclasspath=", "--processorpath=", "--kotlin-jar-path="]: + if arg.startswith(k): + arg = arg.removeprefix(k) + fn, v = __filearg(ctx, arg) + if fn: + inputs.append(ctx.fs.canonpath(fn)) + for f in v: + f, _, _ = f.partition(":") + inputs.append(ctx.fs.canonpath(f)) + + ctx.actions.fix( + inputs = cmd.inputs + inputs, + outputs = cmd.outputs + outputs, + ) + +def __android_dex_handler(ctx, cmd): + out = cmd.outputs[0] + inputs = [ + out.replace("obj/", "gen/").replace(".dex.jar", ".build_config.json"), + ] + + # Add __dex.desugardeps to the outputs. + outputs = [ + out + ".md5.stamp", + ] + for i, arg in enumerate(cmd.args): + if arg == "--desugar-dependencies": + outputs.append(ctx.fs.canonpath(cmd.args[i + 1])) + for k in ["--class-inputs=", "--bootclasspath=", "--classpath=", "--class-inputs-filearg=", "--dex-inputs=", "--dex-inputs-filearg="]: + if arg.startswith(k): + arg = arg.removeprefix(k) + fn, v = __filearg(ctx, arg) + if fn: + inputs.append(ctx.fs.canonpath(fn)) + for f in v: + f, _, _ = f.partition(":") + f = ctx.fs.canonpath(f) + inputs.append(f) + + # TODO: dex.py takes --incremental-dir to reuse the .dex produced in a previous build. + # Should remote dex action also take this? + ctx.actions.fix( + inputs = cmd.inputs + inputs, + outputs = cmd.outputs + outputs, + ) + +def __android_turbine_handler(ctx, cmd): + inputs = [] + outputs = [] + out_fileslist = False + if cmd.args[len(cmd.args) - 1].startswith("@"): + out_fileslist = True + for i, arg in enumerate(cmd.args): + if arg.startswith("--jar-path="): + jar_path = ctx.fs.canonpath(arg.removeprefix("--jar-path=")) + if out_fileslist: + outputs.append(jar_path + ".java_files_list.txt") + for k in ["--classpath=", "--processorpath="]: + if arg.startswith(k): + arg = arg.removeprefix(k) + fn, v = __filearg(ctx, arg) + if fn: + inputs.append(ctx.fs.canonpath(fn)) + for f in v: + f, _, _ = f.partition(":") + inputs.append(ctx.fs.canonpath(f)) + + ctx.actions.fix( + inputs = cmd.inputs + inputs, + outputs = cmd.outputs + outputs, + ) + +def __deps_configs(ctx, f, seen, inputs): + if f in seen: + return + seen[f] = True + inputs.append(f) + v = json.decode(str(ctx.fs.read(f))) + for f in v["deps_info"]["deps_configs"]: + f = ctx.fs.canonpath(f) + __deps_configs(ctx, f, seen, inputs) + if "public_deps_configs" in v["deps_info"]: + for f in v["deps_info"]["public_deps_configs"]: + f = ctx.fs.canonpath(f) + __deps_configs(ctx, f, seen, inputs) + +def __android_write_build_config_handler(ctx, cmd): + # Script: + # https://crsrc.org/c/build/android/gyp/write_build_config.py + # GN Config: + # https://crsrc.org/c/build/config/android/internal_rules.gni;l=122;drc=99e4f79301e108ea3d27ec84320f430490382587 + # Sample args: + # --type=java_library + # --depfile gen/third_party/android_deps/org_jetbrains_kotlinx_kotlinx_metadata_jvm_java__build_config_crbug_908819.d + # --deps-configs=\[\"gen/third_party/kotlin_stdlib/kotlin_stdlib_java.build_config.json\"\] + # --public-deps-configs=\[\] + # --build-config gen/third_party/android_deps/org_jetbrains_kotlinx_kotlinx_metadata_jvm_java.build_config.json + # --gn-target //third_party/android_deps:org_jetbrains_kotlinx_kotlinx_metadata_jvm_java + # --non-chromium-code + # --host-jar-path lib.java/third_party/android_deps/org_jetbrains_kotlinx_kotlinx_metadata_jvm.jar + # --unprocessed-jar-path ../../third_party/android_deps/libs/org_jetbrains_kotlinx_kotlinx_metadata_jvm/kotlinx-metadata-jvm-0.1.0.jar + # --interface-jar-path obj/third_party/android_deps/org_jetbrains_kotlinx_kotlinx_metadata_jvm.ijar.jar + # --is-prebuilt + # --bundled-srcjars=\[\] + inputs = [] + seen = {} + for i, arg in enumerate(cmd.args): + if arg in ["--shared-libraries-runtime-deps", "--secondary-abi-shared-libraries-runtime-deps"]: + inputs.append(ctx.fs.canonpath(cmd.args[i + 1])) + continue + if arg == "--tested-apk-config": + f = ctx.fs.canonpath(cmd.args[i + 1]) + __deps_configs(ctx, f, seen, inputs) + continue + for k in ["--deps-configs=", "--public-deps-configs=", "--annotation-processor-configs="]: + if arg.startswith(k): + arg = arg.removeprefix(k) + v = json.decode(arg) + for f in v: + f = ctx.fs.canonpath(f) + __deps_configs(ctx, f, seen, inputs) + + ctx.actions.fix(inputs = cmd.inputs + inputs) + +__handlers = { + "android_compile_resources": __android_compile_resources_handler, + "android_compile_java": __android_compile_java_handler, + "android_dex": __android_dex_handler, + "android_turbine": __android_turbine_handler, + "android_write_build_config": __android_write_build_config_handler, +} + +def __input_deps(ctx, input_deps): + # TODO(crrev.com/c/4596899): Add Java inputs in GN config. + input_deps["third_party/jdk/current:current"] = [ + "third_party/jdk/current/bin/java", + "third_party/jdk/current/bin/java.chromium", + "third_party/jdk/current/conf/logging.properties", + "third_party/jdk/current/conf/security/java.security", + "third_party/jdk/current/lib/ct.sym", + "third_party/jdk/current/lib/jrt-fs.jar", + "third_party/jdk/current/lib/jvm.cfg", + "third_party/jdk/current/lib/libawt.so", + "third_party/jdk/current/lib/libawt_headless.so", + "third_party/jdk/current/lib/libawt_xawt.so", + "third_party/jdk/current/lib/libjava.so", + "third_party/jdk/current/lib/libjimage.so", + "third_party/jdk/current/lib/libjli.so", + "third_party/jdk/current/lib/libjsvml.so", + "third_party/jdk/current/lib/libmanagement.so", + "third_party/jdk/current/lib/libmanagement_ext.so", + "third_party/jdk/current/lib/libnet.so", + "third_party/jdk/current/lib/libnio.so", + "third_party/jdk/current/lib/libverify.so", + "third_party/jdk/current/lib/libzip.so", + "third_party/jdk/current/lib/modules", + "third_party/jdk/current/lib/server/classes.jsa", + "third_party/jdk/current/lib/server/libjvm.so", + "third_party/jdk/current/lib/tzdb.dat", + ] + input_deps["third_party/jdk/current/bin/java"] = [ + "third_party/jdk/current:current", + ] + input_deps["third_party/jdk/current/bin/javac"] = [ + "third_party/jdk/current:current", + ] + input_deps["third_party/protobuf/python/google/protobuf/__init__.py"] = [ + "third_party/protobuf/python/google:google", + ] + +android = module( + "android", + enabled = __enabled, + step_config = __step_config, + filegroups = {}, + handlers = __handlers, + input_deps = __input_deps, +) diff --git a/build/config/siso/blink_all.star b/build/config/siso/blink_all.star new file mode 100644 index 0000000..46b5034 --- /dev/null +++ b/build/config/siso/blink_all.star @@ -0,0 +1,39 @@ +# -*- bazel-starlark -*- +# Copyright 2023 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. +"""Siso configuration for blink scripts.""" + +load("@builtin//struct.star", "module") + +__filegroups = { +} + +__handlers = { +} + +__input_deps = { +} + +def __step_config(ctx, step_config): + step_config["rules"].extend([ + { + "name": "blink/generate_bindings", + "command_prefix": "python3 ../../third_party/blink/renderer/bindings/scripts/generate_bindings.py", + "inputs": [ + # build/print_python_deps.py couldn't detect this? + # TODO(crbug.com/1475569): fix build/print_python_deps.py + "third_party/mako/mako/mako/ext/pygmentplugin.py", + ], + "remote": True, + "platform_ref": "large", + }, + ]) + return step_config + +blink_all = module( + "blink_all", + filegroups = __filegroups, + handlers = __handlers, + step_config = __step_config, +) diff --git a/build/config/siso/clang_all.star b/build/config/siso/clang_all.star new file mode 100644 index 0000000..48cb9a1 --- /dev/null +++ b/build/config/siso/clang_all.star @@ -0,0 +1,47 @@ +# -*- bazel-starlark -*- +# Copyright 2023 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. +"""Siso configuration for clang.""" + +load("@builtin//struct.star", "module") + +__filegroups = { + "third_party/libc++/src/include:headers": { + "type": "glob", + "includes": ["*"], + # can't use "*.h", because c++ headers have no extension. + }, + "third_party/libc++abi/src/include:headers": { + "type": "glob", + "includes": ["*.h"], + }, + + # toolchain root + # :headers for compiling + "third_party/llvm-build/Release+Asserts:headers": { + "type": "glob", + "includes": [ + "*.h", + "bin/clang", + "bin/clang++", + "bin/clang-cl.exe", + ], + }, +} + +__input_deps = { + # need this because we use + # third_party/libc++/src/include:headers, + # but scandeps doesn't scan `__config` file, which uses + # `#include <__config_site>` + "third_party/libc++/src/include": [ + "buildtools/third_party/libc++/__config_site", + ], +} + +clang_all = module( + "clang_all", + filegroups = __filegroups, + input_deps = __input_deps, +) diff --git a/build/config/siso/clang_code_coverage_wrapper.star b/build/config/siso/clang_code_coverage_wrapper.star new file mode 100644 index 0000000..3994c65 --- /dev/null +++ b/build/config/siso/clang_code_coverage_wrapper.star @@ -0,0 +1,223 @@ +# -*- bazel-starlark -*- +# Copyright 2023 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. +"""Siso config version of clang_code_coverage_wrapper.py""" +# LINT.IfChange + +load("@builtin//struct.star", "module") + +# Logics are copied from build/toolchain/clang_code_coverage_wrapper.py +# in ordre to strip coverage flags without process invocation. +# This is neceesary for Siso to send clang command to RBE without the wrapper and instrument file. + +# Flags used to enable coverage instrumentation. +# Flags should be listed in the same order that they are added in +# build/config/coverage/BUILD.gn +_COVERAGE_FLAGS = [ + "-fprofile-instr-generate", + "-fcoverage-mapping", + # Following experimental flags remove unused header functions from the + # coverage mapping data embedded in the test binaries, and the reduction + # of binary size enables building Chrome's large unit test targets on + # MacOS. Please refer to crbug.com/796290 for more details. + "-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 _DEFAULT_COVERAGE_EXCLUSION_LIST. +_COVERAGE_EXCLUSION_LIST_MAP = { + "android": [ + # This file caused webview native library failed on arm64. + "../../device/gamepad/dualshock4_controller.cc", + ], + "fuchsia": [ + # TODO(crbug.com/1174725): These files caused clang to crash while + # compiling them. + "../../base/allocator/partition_allocator/pcscan.cc", + "../../third_party/skia/src/core/SkOpts.cpp", + "../../third_party/skia/src/opts/SkOpts_hsw.cpp", + "../../third_party/skia/third_party/skcms/skcms.cc", + ], + "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 + "../../components/media_router/common/providers/cast/channel/cast_channel_enum.cc", #pylint: disable=line-too-long + "../../components/media_router/common/providers/cast/channel/cast_message_util.cc", #pylint: disable=line-too-long + "../../components/media_router/common/providers/cast/cast_media_source.cc", #pylint: disable=line-too-long + "../../ui/events/keycodes/dom/keycode_converter.cc", + ], + "chromeos": [ + # These files caused clang to crash while compiling them. They are + # excluded pending an investigation into the underlying compiler bug. + "../../third_party/webrtc/p2p/base/p2p_transport_channel.cc", + "../../third_party/icu/source/common/uts46.cpp", + "../../third_party/icu/source/common/ucnvmbcs.cpp", + "../../base/android/android_image_reader_compat.cc", + ], +} + +# Map of force lists indexed by target OS. +_COVERAGE_FORCE_LIST_MAP = { + # clang_profiling.cc refers to the symbol `__llvm_profile_dump` from the + # profiling runtime. In a partial coverage build, it is possible for a + # binary to include clang_profiling.cc but have no instrumented files, thus + # causing an unresolved symbol error because the profiling runtime will not + # be linked in. Therefore we force coverage for this file to ensure that + # any target that includes it will also get the profiling runtime. + "win": [r"..\..\base\test\clang_profiling.cc"], + # TODO(crbug.com/1141727) We're seeing runtime LLVM errors in mac-rel when + # no files are changed, so we suspect that this is similar to the other + # problem with clang_profiling.cc on Windows. The TODO here is to force + # coverage for this specific file on ALL platforms, if it turns out to fix + # this issue on Mac as well. It's the only file that directly calls + # `__llvm_profile_dump` so it warrants some special treatment. + "mac": ["../../base/test/clang_profiling.cc"], +} + +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. + # That ensures that we only remove the flags added by GN when + # "use_clang_coverage" is true. Otherwise, we would remove flags set by + # other parts of the build system. + start_flag = _COVERAGE_FLAGS[0] + num_flags = len(_COVERAGE_FLAGS) + start_idx = 0 + + def _start_flag_idx(cmd, start_idx): + for i in range(start_idx, len(cmd)): + if cmd[i] == start_flag: + return i + + # Workaround to emulate while loop in Starlark. + for _ in range(0, len(command)): + idx = _start_flag_idx(command, start_idx) + if not idx: + # Coverage flags are not included anymore. + return command + if command[idx:idx + num_flags] == _COVERAGE_FLAGS: + # Starlark doesn't have `del`. + command = command[:idx] + command[idx + num_flags:] + + # There can be multiple sets of _COVERAGE_FLAGS. All of these need to be + # removed. + start_idx = idx + else: + start_idx = idx + 1 + return command + +def __run(ctx, args): + """Runs the main logic of clang_code_coverage_wrapper. + + This is slightly different from the main function of clang_code_coverage_wrapper.py + because starlark can't use Python's standard libraries. + """ + # 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. + # That ensures that we only remove the flags added by GN when + # "use_clang_coverage" is true. Otherwise, we would remove flags set by + # other parts of the build system. + + if len(args) == 0: + return args + if not args[0].endswith("python3") and not args[0].endswith("python3.exe"): + return args + + has_coveage_wrapper = False + instrument_file = None + compile_command_pos = None + target_os = None + source_flag = "-c" + source_flag_index = None + for i, arg in enumerate(args): + if i == 0: + continue + if arg == "../../build/toolchain/clang_code_coverage_wrapper.py": + has_coveage_wrapper = True + continue + if arg.startswith("--files-to-instrument="): + instrument_file = arg.removeprefix("--files-to-instrument=") + continue + if arg.startswith("--target-os="): + target_os = arg.removeprefix("--target-os=") + if target_os == "win": + source_flag = "/c" + continue + if not compile_command_pos and not args[i].startswith("-") and "clang" in args[i]: + compile_command_pos = i + continue + if args[i] == source_flag: + # 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 + # On Windows, clang-cl.exe uses /c instead of -c. + source_flag_index = i + continue + + if not has_coveage_wrapper or not compile_command_pos: + print("this is not clang coverage command. %s" % str(args)) + return args + + compile_command = args[compile_command_pos:] + + if not source_flag_index: + fail("%s argument is not found in the compile command. %s" % (source_flag, str(args))) + + if source_flag_index + 1 >= len(args): + fail("Source file to be compiled is missing from the command.") + + # On Windows, filesystem paths should use '\', but GN creates build commands + # that use '/'. + # The original logic in clang_code_coverage_wrapper.py uses + # os.path.normpath() to ensure to ensure that the path uses the correct + # separator for the current platform. i.e. '\' on Windows and '/' otherwise + # Siso's ctx.fs.canonpath() ensures '/' on all platforms, instead. + # TODO: Consdier coverting the paths in instrument file and hardcoded lists + # only once at initialization if it improves performance. + + compile_source_file = ctx.fs.canonpath(args[source_flag_index + 1]) + + extension = compile_source_file.rsplit(".", 1)[1] + if not extension in ["c", "cc", "cpp", "cxx", "m", "mm", "S"]: + fail("Invalid source file %s found. extension=%s" % (compile_source_file, extension)) + + exclusion_list = _COVERAGE_EXCLUSION_LIST_MAP.get( + target_os, + _DEFAULT_COVERAGE_EXCLUSION_LIST, + ) + exclusion_list = [ctx.fs.canonpath(f) for f in exclusion_list] + force_list = _COVERAGE_FORCE_LIST_MAP.get(target_os, []) + force_list = [ctx.fs.canonpath(f) for f in force_list] + + files_to_instrument = [] + if instrument_file: + files_to_instrument = str(ctx.fs.read(ctx.fs.canonpath(instrument_file))).splitlines() + files_to_instrument = [ctx.fs.canonpath(f) for f in files_to_instrument] + + should_remove_flags = False + if compile_source_file not in force_list: + if compile_source_file in exclusion_list: + should_remove_flags = True + elif instrument_file and compile_source_file not in files_to_instrument: + should_remove_flags = True + + if should_remove_flags: + return _remove_flags_from_command(compile_command) + return compile_command + +clang_code_coverage_wrapper = module( + "clang_code_coverage_wrapper", + run = __run, +) + +# LINT.ThenChange(/build/toolchain/clang_code_coverage_wrapper.py) diff --git a/build/config/siso/clang_linux.star b/build/config/siso/clang_linux.star new file mode 100644 index 0000000..6985fcb --- /dev/null +++ b/build/config/siso/clang_linux.star @@ -0,0 +1,124 @@ +# -*- bazel-starlark -*- +# Copyright 2023 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. +"""Siso configuration for clang/linux.""" + +load("@builtin//path.star", "path") +load("@builtin//struct.star", "module") +load("./clang_all.star", "clang_all") +load("./clang_code_coverage_wrapper.star", "clang_code_coverage_wrapper") + +__filegroups = { + # for precomputed subtrees + "build/linux/debian_bullseye_amd64-sysroot/usr/include:include": { + "type": "glob", + "includes": ["*"], + # need bits/stab.def, c++/* + }, + "build/linux/debian_bullseye_amd64-sysroot/usr/lib:headers": { + "type": "glob", + "includes": ["*.h", "crtbegin.o"], + }, + "build/linux/debian_bullseye_i386-sysroot/usr/include:include": { + "type": "glob", + "includes": ["*"], + # need bits/stab.def, c++/* + }, + "build/linux/debian_bullseye_i386-sysroot/usr/lib:headers": { + "type": "glob", + "includes": ["*.h", "crtbegin.o"], + }, + "third_party/android_toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include:include": { + "type": "glob", + "includes": ["*"], + # can't use "*.h", because c++ headers have no extension. + }, + "third_party/android_toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/local/include:include": { + "type": "glob", + "includes": ["*"], + }, +} +__filegroups.update(clang_all.filegroups) + +def __clang_compile_coverage(ctx, cmd): + clang_command = clang_code_coverage_wrapper.run(ctx, list(cmd.args)) + ctx.actions.fix(args = clang_command) + +__handlers = { + "clang_compile_coverage": __clang_compile_coverage, +} + +def __step_config(ctx, step_config): + step_config["input_deps"].update({ + # sysroot headers for precomputed subtrees + "build/linux/debian_bullseye_amd64-sysroot:headers": [ + "build/linux/debian_bullseye_amd64-sysroot/usr/include:include", + "build/linux/debian_bullseye_amd64-sysroot/usr/lib:headers", + ], + "build/linux/debian_bullseye_i386-sysroot:headers": [ + "build/linux/debian_bullseye_i386-sysroot/usr/include:include", + "build/linux/debian_bullseye_i386-sysroot/usr/lib:headers", + ], + "third_party/android_toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot:headers": [ + "third_party/android_toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include:include", + "third_party/android_toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/local/include:include", + ], + }) + step_config["input_deps"].update(clang_all.input_deps) + step_config["rules"].extend([ + { + "name": "clang/cxx", + "action": "(.*_)?cxx", + "command_prefix": "../../third_party/llvm-build/Release+Asserts/bin/clang++ ", + "inputs": [ + "third_party/llvm-build/Release+Asserts/bin/clang++", + ], + "remote": True, + "canonicalize_dir": True, + "timeout": "2m", + }, + { + "name": "clang/cc", + "action": "(.*_)?cc", + "command_prefix": "../../third_party/llvm-build/Release+Asserts/bin/clang ", + "inputs": [ + "third_party/llvm-build/Release+Asserts/bin/clang", + ], + "remote": True, + "canonicalize_dir": True, + "timeout": "2m", + }, + { + "name": "clang-coverage/cxx", + "action": "(.*_)?cxx", + "command_prefix": "\"python3\" ../../build/toolchain/clang_code_coverage_wrapper.py", + "inputs": [ + "third_party/llvm-build/Release+Asserts/bin/clang++", + ], + "handler": "clang_compile_coverage", + "remote": True, + "canonicalize_dir": True, + "timeout": "2m", + }, + { + "name": "clang-coverage/cc", + "action": "(.*_)?cc", + "command_prefix": "\"python3\" ../../build/toolchain/clang_code_coverage_wrapper.py", + "inputs": [ + "third_party/llvm-build/Release+Asserts/bin/clang", + ], + "handler": "clang_compile_coverage", + "remote": True, + "canonicalize_dir": True, + "timeout": "2m", + }, + ]) + return step_config + +clang = module( + "clang", + step_config = __step_config, + filegroups = __filegroups, + handlers = __handlers, +) diff --git a/build/config/siso/clang_mac.star b/build/config/siso/clang_mac.star new file mode 100644 index 0000000..a25f08c --- /dev/null +++ b/build/config/siso/clang_mac.star @@ -0,0 +1,126 @@ +# -*- bazel-starlark -*- +# Copyright 2023 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. +"""Siso configuration for clang/mac.""" + +load("@builtin//path.star", "path") +load("@builtin//struct.star", "module") +load("./clang_all.star", "clang_all") +load("./clang_code_coverage_wrapper.star", "clang_code_coverage_wrapper") +load("./rewrapper_cfg.star", "rewrapper_cfg") + +__filegroups = { + "build/mac_files/xcode_binaries/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk:headers": { + "type": "glob", + "includes": ["*"], + }, +} +__filegroups.update(clang_all.filegroups) + +def __clang_compile_coverage(ctx, cmd): + clang_command = clang_code_coverage_wrapper.run(ctx, list(cmd.args)) + ctx.actions.fix(args = clang_command) + +__handlers = { + "clang_compile_coverage": __clang_compile_coverage, +} + +def __step_config(ctx, step_config): + cfg = "buildtools/reclient_cfgs/chromium-browser-clang/rewrapper_mac.cfg" + if ctx.fs.exists(cfg): + reproxy_config = rewrapper_cfg.parse(ctx, cfg) + step_config["platforms"].update({ + "clang": reproxy_config["platform"], + }) + step_config["input_deps"].update(clang_all.input_deps) + step_config["rules"].extend([ + { + "name": "clang/cxx", + "action": "(.*_)?cxx", + "command_prefix": "../../third_party/llvm-build/Release+Asserts/bin/clang++", + "platform_ref": "clang", + "remote": True, + "remote_wrapper": reproxy_config["remote_wrapper"], + }, + { + "name": "clang/cc", + "action": "(.*_)?cc", + "command_prefix": "../../third_party/llvm-build/Release+Asserts/bin/clang", + "platform_ref": "clang", + "remote": True, + "remote_wrapper": reproxy_config["remote_wrapper"], + }, + { + "name": "clang/objcxx", + "action": "(.*_)?objcxx", + "command_prefix": "../../third_party/llvm-build/Release+Asserts/bin/clang++", + "platform_ref": "clang", + "remote": True, + "remote_wrapper": reproxy_config["remote_wrapper"], + }, + { + "name": "clang/objc", + "action": "(.*_)?objc", + "command_prefix": "../../third_party/llvm-build/Release+Asserts/bin/clang", + "platform_ref": "clang", + "remote": True, + "remote_wrapper": reproxy_config["remote_wrapper"], + }, + { + "name": "clang-coverage/cxx", + "action": "(.*_)?cxx", + "command_prefix": "python3 ../../build/toolchain/clang_code_coverage_wrapper.py", + "inputs": [ + "third_party/llvm-build/Release+Asserts/bin/clang++", + ], + "handler": "clang_compile_coverage", + "platform_ref": "clang", + "remote": True, + "remote_wrapper": reproxy_config["remote_wrapper"], + }, + { + "name": "clang-coverage/cc", + "action": "(.*_)?cc", + "command_prefix": "python3 ../../build/toolchain/clang_code_coverage_wrapper.py", + "inputs": [ + "third_party/llvm-build/Release+Asserts/bin/clang", + ], + "handler": "clang_compile_coverage", + "platform_ref": "clang", + "remote": True, + "remote_wrapper": reproxy_config["remote_wrapper"], + }, + { + "name": "clang-coverage/objcxx", + "action": "(.*_)?objcxx", + "command_prefix": "python3 ../../build/toolchain/clang_code_coverage_wrapper.py", + "inputs": [ + "third_party/llvm-build/Release+Asserts/bin/clang++", + ], + "handler": "clang_compile_coverage", + "platform_ref": "clang", + "remote": True, + "remote_wrapper": reproxy_config["remote_wrapper"], + }, + { + "name": "clang-coverage/objc", + "action": "(.*_)?objc", + "command_prefix": "python3 ../../build/toolchain/clang_code_coverage_wrapper.py", + "inputs": [ + "third_party/llvm-build/Release+Asserts/bin/clang", + ], + "handler": "clang_compile_coverage", + "platform_ref": "clang", + "remote": True, + "remote_wrapper": reproxy_config["remote_wrapper"], + }, + ]) + return step_config + +clang = module( + "clang", + step_config = __step_config, + filegroups = __filegroups, + handlers = __handlers, +) diff --git a/build/config/siso/clang_windows.star b/build/config/siso/clang_windows.star new file mode 100644 index 0000000..7b04aea --- /dev/null +++ b/build/config/siso/clang_windows.star @@ -0,0 +1,251 @@ +# -*- bazel-starlark -*- +# Copyright 2023 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. +"""Siso configuration for clang-cl/windows.""" + +load("@builtin//path.star", "path") +load("@builtin//struct.star", "module") +load("./clang_all.star", "clang_all") +load("./clang_code_coverage_wrapper.star", "clang_code_coverage_wrapper") +load("./rewrapper_cfg.star", "rewrapper_cfg") + +__filegroups = { + # for precomputed subtree + "third_party/depot_tools/win_toolchain/vs_files/27370823e7:headers-ci": { + "type": "glob", + "includes": [ + "*.h", + "*.inl", + "*.H", + "*.Hxx", + "*.hxx", + "*.hpp", + "VC/Tools/MSVC/*/include/*", + "VC/Tools/MSVC/*/include/*/*", + ], + }, +} + +__filegroups.update(clang_all.filegroups) + +def __clang_compile_coverage(ctx, cmd): + clang_command = clang_code_coverage_wrapper.run(ctx, list(cmd.args)) + ctx.actions.fix(args = clang_command) + +__handlers = { + "clang_compile_coverage": __clang_compile_coverage, +} + +def __step_config(ctx, step_config): + cfg = "buildtools/reclient_cfgs/chromium-browser-clang/rewrapper_windows.cfg" + if ctx.fs.exists(cfg): + reproxy_config = rewrapper_cfg.parse(ctx, cfg) + step_config["platforms"].update({ + "clang-cl": reproxy_config["platform"], + }) + step_config["input_deps"].update(clang_all.input_deps) + if reproxy_config["platform"]["OSFamily"] == "Windows": + step_config["input_deps"].update({ + "third_party/depot_tools/win_toolchain/vs_files/27370823e7:headers": [ + "third_party/depot_tools/win_toolchain/vs_files/27370823e7:headers-ci", + ], + }) + else: + step_config["input_deps"].update({ + "third_party/depot_tools/win_toolchain/vs_files/27370823e7:headers": [ + "third_party/depot_tools/win_toolchain/vs_files/27370823e7:headers-ci", + # third_party/libc++ includes "DeplayIMP.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/VC/Tools/MSVC/14.34.31933/include/DelayIMP.h", + # third_party/abseil-cpp includes "dbghelp.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/dbghelp.h", + # third_party/abseil-cpp includes "aclapi.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/aclapi.h", + # base/debug includes "psapi.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/psapi.h", + # base/process includes "tlhelp32.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/tlhelp32.h", + # base/process includes "userenv.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/userenv.h", + # base includes "shlobj.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/shlobj.h", + # base/win includes "lm.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/lm.h", + # base/win includes "mdmregistration.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/mdmregistration.h", + # base/win includes "shellscalingapi.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/shellscalingapi.h", + # base/win includes "uiviewsettingsinterop.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/uiviewsettingsinterop.h", + # native_client/src/shared/platform/win includes "WinError.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/shared/WinError.h", + # third_party/webrtc/rtc_base/win includes "windows.graphics.directX.direct3d11.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/cppwinrt/winrt/windows.graphics.directX.direct3d11.h", + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/winrt/windows.graphics.directX.direct3d11.h", + # third_party/webrtc/rtc_base/win includes "windows.graphics.directX.direct3d11.interop.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/windows.graphics.directX.direct3d11.interop.h", + # third_party/crashpad/crashpad/handler/win includes "werapi.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/werapi.h", + # chrome/install_static/ includes "wtsapi32.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/wtsapi32.h", + # third_party/dawn/include/dawn/native includes "DXGI1_4.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/shared/DXGI1_4.h", + # v8/src/diagnostics includes "versionhelpers.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/versionhelpers.h", + # ui/gfx/ includes "DXGIType.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/shared/DXGIType.h", + # third_party/unrar includes "PowrProf.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/PowrProf.h", + # device/base/ includes "dbt.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/dbt.h", + # third_party/skia/ includes "ObjBase.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/ObjBase.h", + # third_party/webrtc/rtc_base includes "ws2spi.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/ws2spi.h", + # third_party/skia/ includes "T2EmbApi.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/T2EmbApi.h", + # device/vr/windows/ includes "D3D11_1.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/D3D11_1.h", + # rlz/win/ includes "Sddl.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/shared/Sddl.h", + # chrome/common/safe_browsing/ includes "softpub.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/softpub.h", + # services/device/generic_sensor/ includes "Sensors.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/Sensors.h", + # third_party/webrtc/modules/desktop_capture/win includes "windows.graphics.capture.interop.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/windows.graphics.capture.interop.h", + # third_party/skia/ includes "FontSub.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/FontSub.h", + # chrome/updater/ includes "regstr.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/regstr.h", + # services/device/compute_pressure includes "pdh.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/pdh.h", + # chrome/installer/ includes "mshtmhst.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/mshtmhst.h", + # net/ssl/ includes "NCrypt.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/NCrypt.h", + # device/fido/win/ includes "Combaseapi.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/Combaseapi.h", + # components/device_signals/core/system_signals/win includes "wscapi.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/wscapi.h", + # net/proxy_resolution/win/ includes "dhcpcsdk.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/dhcpcsdk.h", + # third_party/dawn/third_party/glfw includes "xinput.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/xinput.h", + # v8/tools/v8windbg includes "pathcch.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/pathcch.h", + # remoting/host includes "rpcproxy.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/rpcproxy.h", + # sandbox/win includes "Aclapi.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/Aclapi.h", + # ui/accessibility/platform includes "uiautomation.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/uiautomation.h", + # chrome/credential_provider/gaiacp includes "ntsecapi.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/ntsecapi.h", + # net/dns includes "Winsock2.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/Winsock2.h", + # media/cdm/win includes "mferror.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/mferror.h", + # chrome/credentialProvider/gaiacp includes "Winternl.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/Winternl.h", + # media/audio/win includes "audioclient.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/audioclient.h", + # media/audio/win includes "MMDeviceAPI.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/MMDeviceAPI.h", + # net/proxy_resolution/win includes "dhcpv6csdk.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/dhcpv6csdk.h", + # components/system_media_controls/win includes "systemmediatransportcontrolsinterop.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/systemmediatransportcontrolsinterop.h", + # ui/native_theme includes "Windows.Media.ClosedCaptioning.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/cppwinrt/winrt/Windows.Media.ClosedCaptioning.h", + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/winrt/Windows.Media.ClosedCaptioning.h", + # media/audio/win includes "Functiondiscoverykeys_devpkey.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/Functiondiscoverykeys_devpkey.h", + # device/fido includes "Winuser.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/Winuser.h", + # chrome/updater/win includes "msxml2.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/msxml2.h", + # remoting/host includes "ime.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/ime.h", + # remoting/host/win includes "D3DCommon.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/D3DCommon.h", + # ui/views/controls/menu includes "Vssym32.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/Vssym32.h", + # third_party/wtl includes "richedit.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/richedit.h", + # chrome/updater/net includes "Urlmon.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/Urlmon.h", + # device/gamepad includes "XInput.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/XInput.h", + # chrome/credential_provider/gaiacp includes "Shlobj.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/Shlobj.h", + # content/renderer includes "mlang.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/mlang.h", + # components/storage_monitor includes "portabledevice.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/portabledevice.h", + # third_party/wtl includes "richole.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/richole.h", + # chrome/utility/importer includes "intshcut.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/intshcut.h", + # chrome/browser/net includes "Ws2spi.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/Ws2spi.h", + # chrome/browser/enterprise/platform_auth includes "proofofpossessioncookieinfo.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/proofofpossessioncookieinfo.h", + # chrome/utility/importer includes "urlhist.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/urlhist.h", + # chrome/updater/win/installer includes "msiquery.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/msiquery.h", + # third_party/win_virtual_display/controller includes "Devpropdef.h" + "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/shared/Devpropdef.h", + ], + }) + step_config["rules"].extend([ + { + "name": "clang-cl/cxx", + "action": "(.*_)?cxx", + "command_prefix": "..\\..\\third_party\\llvm-build\\Release+Asserts\\bin\\clang-cl.exe", + "platform_ref": "clang-cl", + "remote": True, + "remote_wrapper": reproxy_config["remote_wrapper"], + }, + { + "name": "clang-cl/cc", + "action": "(.*_)?cc", + "command_prefix": "..\\..\\third_party\\llvm-build\\Release+Asserts\\bin\\clang-cl.exe", + "platform_ref": "clang-cl", + "remote": True, + "remote_wrapper": reproxy_config["remote_wrapper"], + }, + { + "name": "clang-coverage/cxx", + "action": "(.*_)?cxx", + "command_prefix": "python3.exe ../../build/toolchain/clang_code_coverage_wrapper.py", + "inputs": [ + "third_party/llvm-build/Release+Asserts/bin/clang++", + ], + "handler": "clang_compile_coverage", + "platform_ref": "clang-cl", + "remote": True, + "remote_wrapper": reproxy_config["remote_wrapper"], + }, + { + "name": "clang-coverage/cc", + "action": "(.*_)?cc", + "command_prefix": "python3.exe ../../build/toolchain/clang_code_coverage_wrapper.py", + "inputs": [ + "third_party/llvm-build/Release+Asserts/bin/clang", + ], + "handler": "clang_compile_coverage", + "platform_ref": "clang-cl", + "remote": True, + "remote_wrapper": reproxy_config["remote_wrapper"], + }, + ]) + return step_config + +clang = module( + "clang", + step_config = __step_config, + filegroups = __filegroups, + handlers = __handlers, +) diff --git a/build/config/siso/config.star b/build/config/siso/config.star new file mode 100644 index 0000000..f1bd52c --- /dev/null +++ b/build/config/siso/config.star @@ -0,0 +1,30 @@ +# -*- bazel-starlark -*- +# Copyright 2023 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. +"""Config module for checking siso -config flags.""" + +load("@builtin//struct.star", "module") + +__KNOWN_CONFIG_OPTIONS = [ + "remote_all", +] + +def __check(ctx): + if "config" in ctx.flags: + for cfg in ctx.flags["config"].split(","): + if cfg not in __KNOWN_CONFIG_OPTIONS: + print("unknown config: %s" % cfg) + +def __get(ctx, key): + if "config" in ctx.flags: + for cfg in ctx.flags["config"].split(","): + if cfg == key: + return True + return False + +config = module( + "config", + check = __check, + get = __get, +) diff --git a/build/config/siso/configure_siso.py b/build/config/siso/configure_siso.py new file mode 100755 index 0000000..bcf79ca --- /dev/null +++ b/build/config/siso/configure_siso.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 +# Copyright 2023 The Chromium Authors +# 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 configure siso.""" + +import argparse +import os +import sys + +THIS_DIR = os.path.abspath(os.path.dirname(__file__)) + + +def main(): + parser = argparse.ArgumentParser(description="configure siso") + parser.add_argument("--rbe_instance", help="RBE instance to use for Siso") + args = parser.parse_args() + + project = None + rbe_instance = args.rbe_instance + if rbe_instance: + elems = rbe_instance.split("/") + if len(elems) == 4 and elems[0] == "projects": + project = elems[1] + rbe_instance = elems[-1] + + siso_env_path = os.path.join(THIS_DIR, ".sisoenv") + with open(siso_env_path, "w") as f: + if project: + f.write("SISO_PROJECT=%s\n" % project) + if rbe_instance: + f.write("SISO_REAPI_INSTANCE=%s\n" % rbe_instance) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/build/config/siso/linux.star b/build/config/siso/linux.star new file mode 100644 index 0000000..f3c99cd --- /dev/null +++ b/build/config/siso/linux.star @@ -0,0 +1,124 @@ +# -*- bazel-starlark -*- +# Copyright 2023 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. +"""Siso configuration for linux.""" + +load("@builtin//struct.star", "module") +load("./clang_linux.star", "clang") +load("./config.star", "config") +load("./mojo.star", "mojo") +load("./nacl_linux.star", "nacl") +load("./nasm_linux.star", "nasm") +load("./proto_linux.star", "proto") +load("./reproxy.star", "reproxy") +load("./android.star", "android") + +__filegroups = {} +__filegroups.update(android.filegroups) +__filegroups.update(clang.filegroups) +__filegroups.update(mojo.filegroups) +__filegroups.update(nacl.filegroups) +__filegroups.update(nasm.filegroups) +__filegroups.update(proto.filegroups) + +__handlers = {} +__handlers.update(android.handlers) +__handlers.update(clang.handlers) +__handlers.update(mojo.handlers) +__handlers.update(nacl.handlers) +__handlers.update(nasm.handlers) +__handlers.update(proto.handlers) +__handlers.update(reproxy.handlers) + +def __disable_remote_b281663988(step_config): + step_config["rules"].insert(0, { + # TODO(b/281663988): missing headers. + "name": "b281663988/missing-headers", + "action_outs": [ + "./obj/ui/qt/qt5_shim/qt_shim.o", + "./obj/ui/qt/qt6_shim/qt_shim.o", + "./obj/ui/qt/qt5_shim/qt5_shim_moc.o", + "./obj/ui/qt/qt6_shim/qt6_shim_moc.o", + "./obj/ui/qt/qt_interface/qt_interface.o", + ], + "remote": False, + # This rule is used only with use_remoteexec. + # TODO(b/292838933): Move this rule into reproxy.star? + "handler": "strip_rewrapper", + }) + return step_config + +def __disable_remote_b289968566(ctx, step_config): + rule = { + # TODO(b/289968566): they often faile with exit=137 (OOM?). + # We should migrate default machine type to n2-standard-2. + "name": "b289968566/exit-137", + "action_outs": [ + "./android_clang_arm/obj/third_party/distributed_point_functions/distributed_point_functions/evaluate_prg_hwy.o", + "./clang_x64_v8_arm64/obj/v8/torque_generated_initializers/js-to-wasm-tq-csa.o", + "./clang_x64_v8_arm64/obj/v8/torque_generated_initializers/wasm-to-js-tq-csa.o", + "./clang_x86_v8_arm/obj/v8/torque_generated_initializers/js-to-wasm-tq-csa.o", + "./clang_x86_v8_arm/obj/v8/torque_generated_initializers/wasm-to-js-tq-csa.o", + "./obj/chrome/browser/ash/ash/autotest_private_api.o", + "./obj/chrome/browser/ash/ash/chrome_browser_main_parts_ash.o", + "./obj/chrome/browser/browser/browser_prefs.o", + "./obj/chrome/browser/browser/chrome_browser_interface_binders.o", + "./obj/chrome/browser/ui/ash/holding_space/browser_tests/holding_space_ui_browsertest.o", + "./obj/chrome/test/browser_tests/browser_non_client_frame_view_chromeos_browsertest.o", + "./obj/chrome/test/browser_tests/chrome_shelf_controller_browsertest.o", + "./obj/chrome/test/browser_tests/device_local_account_browsertest.o", + "./obj/chrome/test/browser_tests/file_manager_browsertest_base.o", + "./obj/chrome/test/browser_tests/remote_apps_manager_browsertest.o", + "./obj/v8/torque_generated_initializers/js-to-wasm-tq-csa.o", + "./obj/v8/torque_generated_initializers/wasm-to-js-tq-csa.o", + ], + "remote": False, + } + if reproxy.enabled(ctx): + rule["handler"] = "strip_rewrapper" + step_config["rules"].insert(0, rule) + return step_config + +def __step_config(ctx, step_config): + config.check(ctx) + step_config["platforms"] = { + "default": { + "OSFamily": "Linux", + "container-image": "docker://gcr.io/chops-public-images-prod/rbe/siso-chromium/linux@sha256:912808c295e578ccde53b0685bcd0d56c15d7a03e819dcce70694bfe3fdab35e", + "label:action_default": "1", + }, + "large": { + "OSFamily": "Linux", + "container-image": "docker://gcr.io/chops-public-images-prod/rbe/siso-chromium/linux@sha256:912808c295e578ccde53b0685bcd0d56c15d7a03e819dcce70694bfe3fdab35e", + # As of Jul 2023, the action_large pool uses n2-highmem-8 with 200GB of pd-ssd. + # The pool is intended for the following actions. + # - slow actions that can benefit from multi-cores and/or faster disk I/O. e.g. link, mojo, generate bindings etc. + # - actions that fail for OOM. + "label:action_large": "1", + }, + } + + step_config = __disable_remote_b289968566(ctx, step_config) + + if android.enabled(ctx): + step_config = android.step_config(ctx, step_config) + + step_config = nacl.step_config(ctx, step_config) + step_config = nasm.step_config(ctx, step_config) + step_config = proto.step_config(ctx, step_config) + step_config = mojo.step_config(ctx, step_config) + step_config = clang.step_config(ctx, step_config) + + if reproxy.enabled(ctx): + step_config = __disable_remote_b281663988(step_config) + step_config = reproxy.step_config(ctx, step_config) + + return step_config + +chromium = module( + "chromium", + step_config = __step_config, + filegroups = __filegroups, + handlers = __handlers, +) diff --git a/build/config/siso/mac.star b/build/config/siso/mac.star new file mode 100644 index 0000000..d03440e --- /dev/null +++ b/build/config/siso/mac.star @@ -0,0 +1,32 @@ +# -*- bazel-starlark -*- +# Copyright 2023 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. +"""Siso configuration for macOS.""" + +load("@builtin//struct.star", "module") +load("./clang_mac.star", "clang") +load("./config.star", "config") +load("./reproxy.star", "reproxy") + +__filegroups = {} +__filegroups.update(clang.filegroups) +__handlers = {} +__handlers.update(clang.handlers) +__handlers.update(reproxy.handlers) + +def __step_config(ctx, step_config): + config.check(ctx) + step_config["platforms"] = {} + + step_config = clang.step_config(ctx, step_config) + if reproxy.enabled(ctx): + step_config = reproxy.step_config(ctx, step_config) + return step_config + +chromium = module( + "chromium", + step_config = __step_config, + filegroups = __filegroups, + handlers = __handlers, +) diff --git a/build/config/siso/main.star b/build/config/siso/main.star new file mode 100644 index 0000000..3928f3c --- /dev/null +++ b/build/config/siso/main.star @@ -0,0 +1,63 @@ +# -*- bazel-starlark -*- +# Copyright 2023 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. +"""Siso configuration main entry.""" + +load("@builtin//encoding.star", "json") +load("@builtin//runtime.star", "runtime") +load("@builtin//struct.star", "module") +load("./blink_all.star", "blink_all") +load("./linux.star", chromium_linux = "chromium") +load("./mac.star", chromium_mac = "chromium") +load("./simple.star", "simple") +load("./windows.star", chromium_windows = "chromium") + +def init(ctx): + print("runtime: os:%s arch:%s run:%d" % ( + runtime.os, + runtime.arch, + runtime.num_cpu, + )) + host = { + "linux": chromium_linux, + "darwin": chromium_mac, + "windows": chromium_windows, + }[runtime.os] + step_config = { + "platforms": {}, + "input_deps": {}, + "rules": [], + } + step_config = host.step_config(ctx, step_config) + step_config = simple.step_config(ctx, step_config) + step_config = blink_all.step_config(ctx, step_config) + + # Python actions may use an absolute path at the first argument. + # e.g. C:/src/depot_tools/bootstrap-2@3_8_10_chromium_26_bin/python3/bin/python3.exe + # It needs to set `pyhton3` or `python3.exe` be replaced with `python3.exe` for remote execution. + for rule in step_config["rules"]: + if rule["name"].startswith("clang-coverage"): + # clang_code_coverage_wrapper.run() strips the python wrapper. + # So it shouldn't set `remote_command: python3`. + continue + arg0 = rule.get("command_prefix", "").split(" ")[0].strip("\"") + if arg0 in ["python3", "python3.exe"]: + rule["remote_command"] = arg0 + + filegroups = {} + filegroups.update(blink_all.filegroups) + filegroups.update(host.filegroups) + filegroups.update(simple.filegroups) + + handlers = {} + handlers.update(blink_all.handlers) + handlers.update(host.handlers) + handlers.update(simple.handlers) + + return module( + "config", + step_config = json.encode(step_config), + filegroups = filegroups, + handlers = handlers, + ) diff --git a/build/config/siso/mojo.star b/build/config/siso/mojo.star new file mode 100644 index 0000000..de8150f --- /dev/null +++ b/build/config/siso/mojo.star @@ -0,0 +1,170 @@ +# -*- bazel-starlark -*- +# Copyright 2023 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. +"""Siso configuration for mojo.""" + +load("@builtin//struct.star", "module") + +__filegroups = {} + +__handlers = {} + +def __step_config(ctx, step_config): + # mojom_bindings_generator.py will run faster on n2-highmem-8 than + # n2-custom-2-3840 + # e.g. + # n2-highmem-8: exec: 880.202978ms + # n2-custom-2-3840: exec: 2.42808488s + platform_ref = "large" + step_config["rules"].extend([ + { + "name": "mojo/mojom_bindings_generator", + "command_prefix": "python3 ../../mojo/public/tools/bindings/mojom_bindings_generator.py", + "inputs": [ + "mojo/public/tools/bindings/mojom_bindings_generator.py", + ], + "indirect_inputs": { + "includes": [ + "*.js", + "*.mojom", + "*.mojom-module", + "*.test-mojom", + "*.test-mojom-module", + "*.zip", + ], + }, + "exclude_input_patterns": [ + "*.stamp", + ], + # TODO(crbug.com/1437820): unspecified outputs of mojom_bindings_generator.py + "outputs_map": { + "./gen/components/aggregation_service/aggregation_service.mojom.js": { + "outputs": [ + "./gen/mojom-webui/components/aggregation_service/aggregation_service.mojom-webui.js", + ], + }, + "./gen/components/attribution_reporting/eligibility_error.mojom.js": { + "outputs": [ + "./gen/mojom-webui/components/attribution_reporting/eligibility_error.mojom-webui.js", + "./gen/mojom-webui/components/attribution_reporting/registration_eligibility.mojom-webui.js", + "./gen/mojom-webui/components/attribution_reporting/source_registration_error.mojom-webui.js", + "./gen/mojom-webui/components/attribution_reporting/trigger_registration_error.mojom-webui.js", + ], + }, + "./gen/components/attribution_reporting/registration.mojom.js": { + "outputs": [ + "./gen/mojom-webui/components/attribution_reporting/registration.mojom-webui.js", + ], + }, + "./gen/media/capture/mojom/image_capture.mojom.js": { + "outputs": [ + "./gen/mojom-webui/media/capture/mojom/image_capture.mojom-webui.js", + ], + }, + "./gen/services/device/public/mojom/usb_device.mojom.js": { + "outputs": [ + "./gen/mojom-webui/services/device/public/mojom/usb_device.mojom-webui.js", + "./gen/mojom-webui/services/device/public/mojom/usb_enumeration_options.mojom-webui.js", + "./gen/mojom-webui/services/device/public/mojom/usb_manager.mojom-webui.js", + "./gen/mojom-webui/services/device/public/mojom/usb_manager_client.mojom-webui.js", + ], + }, + "./gen/services/media_session/public/mojom/audio_focus.mojom.js": { + "outputs": [ + "./gen/mojom-webui/services/media_session/public/mojom/audio_focus.mojom-webui.js", + "./gen/mojom-webui/services/media_session/public/mojom/constants.mojom-webui.js", + "./gen/mojom-webui/services/media_session/public/mojom/media_controller.mojom-webui.js", + "./gen/mojom-webui/services/media_session/public/mojom/media_session.mojom-webui.js", + ], + }, + "./gen/services/network/public/mojom/attribution.mojom.js": { + "outputs": [ + "./gen/mojom-webui/services/network/public/mojom/attribution.mojom-webui.js", + ], + }, + "./gen/services/network/public/mojom/schemeful_site.mojom.js": { + "outputs": [ + "./gen/mojom-webui/services/network/public/mojom/schemeful_site.mojom-webui.js", + ], + }, + "./gen/third_party/blink/public/mojom/quota/quota_manager_host.mojom.js": { + "outputs": [ + "./gen/mojom-webui/third_party/blink/public/mojom/quota/quota_manager_host.mojom-webui.js", + "./gen/mojom-webui/third_party/blink/public/mojom/quota/quota_types.mojom-webui.js", + ], + }, + "./gen/third_party/blink/public/mojom/storage_key/ancestor_chain_bit.mojom.js": { + "outputs": [ + "./gen/mojom-webui/third_party/blink/public/mojom/storage_key/ancestor_chain_bit.mojom-webui.js", + "./gen/mojom-webui/third_party/blink/public/mojom/storage_key/storage_key.mojom-webui.js", + ], + }, + "./gen/ui/base/mojom/ui_base_types.mojom.js": { + "outputs": [ + "./gen/mojom-webui/ui/base/mojom/ui_base_types.mojom-webui.js", + "./gen/mojom-webui/ui/base/mojom/window_open_disposition.mojom-webui.js", + ], + }, + "./gen/ui/gfx/image/mojom/image.mojom.js": { + "outputs": [ + "./gen/mojom-webui/ui/gfx/image/mojom/image.mojom-webui.js", + ], + }, + }, + "restat": True, + "remote": True, + "timeout": "2m", + "output_local": True, + "platform_ref": platform_ref, + }, + { + "name": "mojo/mojom_parser", + "command_prefix": "python3 ../../mojo/public/tools/mojom/mojom_parser.py", + "indirect_inputs": { + "includes": [ + "*.build_metadata", + "*.mojom", + "*.mojom-module", + "*.test-mojom", + "*.test-mojom-module", + ], + }, + "exclude_input_patterns": [ + "*.stamp", + ], + # TODO(b/288523418): missing inputs for mojom_parser? + "outputs_map": { + "./gen/mojo/public/interfaces/bindings/tests/sample_import2.mojom-module": { + "inputs": [ + "./gen/mojo/public/interfaces/bindings/tests/test_mojom_import_wrapper.build_metadata", + "./gen/mojo/public/interfaces/bindings/tests/test_mojom_import_wrapper_wrapper.build_metadata", + ], + }, + "./gen/mojo/public/interfaces/bindings/tests/math_calculator.mojom-module": { + "inputs": [ + "./gen/mojo/public/interfaces/bindings/tests/test_mojom_import_wrapper.build_metadata", + "./gen/mojo/public/interfaces/bindings/tests/test_mojom_import_wrapper_wrapper.build_metadata", + ], + }, + "./gen/mojo/public/interfaces/bindings/tests/test_associated_interfaces.mojom-module": { + "inputs": [ + "./gen/mojo/public/interfaces/bindings/tests/test_mojom_import_wrapper.build_metadata", + "./gen/mojo/public/interfaces/bindings/tests/test_mojom_import_wrapper_wrapper.build_metadata", + ], + }, + }, + "remote": True, + "input_root_absolute_path": True, + "output_local": True, + "platform_ref": platform_ref, + }, + ]) + return step_config + +mojo = module( + "mojo", + step_config = __step_config, + filegroups = __filegroups, + handlers = __handlers, +) diff --git a/build/config/siso/nacl_linux.star b/build/config/siso/nacl_linux.star new file mode 100644 index 0000000..12a56eb --- /dev/null +++ b/build/config/siso/nacl_linux.star @@ -0,0 +1,215 @@ +# -*- bazel-starlark -*- +# Copyright 2023 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. +"""Siso configuration for nacl/linux.""" + +load("@builtin//struct.star", "module") + +__filegroups = { + "native_client/toolchain/linux_x86/pnacl_newlib/bin/pydir:pydir": { + "type": "glob", + "includes": ["*.py"], + }, + "native_client/toolchain/linux_x86/pnacl_newlib/lib:libllvm": { + "type": "glob", + "includes": ["libLLVM*.so"], + }, + "native_client/toolchain/linux_x86/saigo_newlib/bin:clang": { + "type": "glob", + "includes": ["clang-*"], + }, + "native_client/toolchain/linux_x86/saigo_newlib/lib:libso": { + "type": "glob", + "includes": ["*.so*"], + }, + "native_client/toolchain/linux_x86/nacl_x86_glibc/lib/gcc/x86_64-nacl:crtbegin": { + "type": "glob", + "includes": ["crtbegin.o"], + }, + "native_client/toolchain/linux_x86/nacl_x86_glibc/libexec/gcc/x86_64-nacl:ccbackend": { + "type": "glob", + "includes": ["cc1", "cc1plus", "collect2"], + }, + # for precomputed subtrees + "native_client/toolchain/linux_x86/nacl_x86_glibc:header-files": { + "type": "glob", + "includes": ["*.h", "*/include/c++/*/*", "*/include/c++/*/*/*"], + }, + "native_client/toolchain/linux_x86/pnacl_newlib:header-files": { + "type": "glob", + "includes": ["*.h", "*/include/c++/*/*", "*/include/c++/*/*/*"], + }, + "native_client/toolchain/linux_x86/saigo_newlib:header-files": { + "type": "glob", + "includes": ["*.h", "*/include/c++/*/*", "*/include/c++/*/*/*"], + }, +} + +__handlers = {} + +def __step_config(ctx, step_config): + step_config["rules"].extend([ + { + "name": "nacl_linux/pnacl-clang++", + "action": "newlib_pnacl.*_cxx", + "command_prefix": "../../native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang++", + "inputs": [ + "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang++", + ], + "remote": True, + "input_root_absolute_path": True, + "timeout": "2m", + }, + { + "name": "nacl_linux/pnacl-clang", + "action": "newlib_pnacl.*_cc", + "command_prefix": "../../native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang", + "inputs": [ + "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang", + ], + "remote": True, + "input_root_absolute_path": True, + "timeout": "2m", + }, + { + "name": "nacl_linux/glibc/x86_64-nacl-gcc", + "action": "glibc_x64_cc", + "inputs": [ + "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-gcc", + ], + # ELF-32 doesn't work on gVisor, + # so will local-fallback if gVisor is used. + # TODO(b/278485912): remote=True for trusted instance. + "remote": False, + "input_root_absolute_path": True, + }, + { + "name": "nacl_linux/glibc/x86_64-nacl-g++", + "action": "glibc_x64_cxx", + "inputs": [ + "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-g++", + ], + # ELF-32 doesn't work on gVisor, + # so will local-fallback if gVisor is used. + # TODO(b/278485912): remote=True for trusted instance. + "remote": False, + "input_root_absolute_path": True, + }, + { + "name": "nacl_linux/pnacl_newlib/x86_64-nacl-clang++", + "action": "clang_newlib_x64_cxx", + "inputs": [ + "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang++", + "native_client/toolchain/linux_x86/pnacl_newlib/x86_64-nacl/bin/ld", + ], + "remote": True, + "input_root_absolute_path": True, + "timeout": "2m", + }, + { + "name": "nacl_linux/pnacl_newlib/x86_64-nacl-clang", + "action": "clang_newlib_x64_cc", + "inputs": [ + "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang", + "native_client/toolchain/linux_x86/pnacl_newlib/x86_64-nacl/bin/ld", + ], + "remote": True, + "input_root_absolute_path": True, + "timeout": "2m", + }, + { + "name": "nacl_linux/saigo_newlib/x86_64-nacl-clang++", + "action": "irt_x64_cxx", + "command_prefix": "../../native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang++", + "inputs": [ + "native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang++", + ], + "remote": True, + "input_root_absolute_path": True, + "timeout": "2m", + }, + { + "name": "nacl_linux/saigo_newlib/x86_64-nacl-clang", + "action": "irt_x64_cc", + "command_prefix": "../../native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang", + "inputs": [ + "native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang", + ], + "remote": True, + "input_root_absolute_path": True, + "timeout": "2m", + }, + ]) + + step_config["input_deps"].update({ + "native_client/toolchain/linux_x86/nacl_x86_glibc:headers": [ + "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-gcc", + "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-g++", + "native_client/toolchain/linux_x86/nacl_x86_glibc:header-files", + ], + "native_client/toolchain/linux_x86/pnacl_newlib:headers": [ + "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang", + "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang++", + "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang", + "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang++", + "native_client/toolchain/linux_x86/pnacl_newlib:header-files", + ], + "native_client/toolchain/linux_x86/saigo_newlib:headers": [ + "native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang", + "native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang++", + "native_client/toolchain/linux_x86/saigo_newlib:header-files", + ], + "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang": [ + "native_client/toolchain/linux_x86/pnacl_newlib/bin/clang", + "native_client/toolchain/linux_x86/pnacl_newlib/bin/driver.conf", + "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-llc", + "native_client/toolchain/linux_x86/pnacl_newlib/bin/pydir:pydir", + "native_client/toolchain/linux_x86/pnacl_newlib/lib:libllvm", + "native_client/toolchain/linux_x86/pnacl_newlib/x86_64-nacl/bin/ld", + ], + "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang++": [ + "native_client/toolchain/linux_x86/pnacl_newlib/bin/clang", + "native_client/toolchain/linux_x86/pnacl_newlib/bin/driver.conf", + "native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-llc", + "native_client/toolchain/linux_x86/pnacl_newlib/bin/pydir:pydir", + "native_client/toolchain/linux_x86/pnacl_newlib/lib:libllvm", + "native_client/toolchain/linux_x86/pnacl_newlib/x86_64-nacl/bin/ld", + ], + "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang": [ + "native_client/toolchain/linux_x86/pnacl_newlib/lib:libllvm", + ], + "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang++": [ + "native_client/toolchain/linux_x86/pnacl_newlib/lib:libllvm", + ], + "native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang": [ + "native_client/toolchain/linux_x86/saigo_newlib/bin:clang", + "native_client/toolchain/linux_x86/saigo_newlib/lib:libso", + "native_client/toolchain/linux_x86/saigo_newlib/x86_64-nacl/bin/ld", + ], + "native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang++": [ + "native_client/toolchain/linux_x86/saigo_newlib/bin:clang", + "native_client/toolchain/linux_x86/saigo_newlib/lib:libso", + "native_client/toolchain/linux_x86/saigo_newlib/x86_64-nacl/bin/ld", + ], + "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-gcc": [ + "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-as", + "native_client/toolchain/linux_x86/nacl_x86_glibc/lib/gcc/x86_64-nacl:crtbegin", + "native_client/toolchain/linux_x86/nacl_x86_glibc/libexec/gcc/x86_64-nacl:ccbackend", + "native_client/toolchain/linux_x86/nacl_x86_glibc/x86_64-nacl/bin/as", + ], + "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-g++": [ + "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-as", + "native_client/toolchain/linux_x86/nacl_x86_glibc/lib/gcc/x86_64-nacl:crtbegin", + "native_client/toolchain/linux_x86/nacl_x86_glibc/libexec/gcc/x86_64-nacl:ccbackend", + "native_client/toolchain/linux_x86/nacl_x86_glibc/x86_64-nacl/bin/as", + ], + }) + return step_config + +nacl = module( + "nacl", + step_config = __step_config, + filegroups = __filegroups, + handlers = __handlers, +) diff --git a/build/config/siso/nasm_linux.star b/build/config/siso/nasm_linux.star new file mode 100644 index 0000000..55f2778 --- /dev/null +++ b/build/config/siso/nasm_linux.star @@ -0,0 +1,55 @@ +# -*- bazel-starlark -*- +# Copyright 2023 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. +"""Siso configuration for nasm/linux.""" + +load("@builtin//path.star", "path") +load("@builtin//struct.star", "module") +load("./config.star", "config") +load("./nasm_scandeps.star", "nasm_scandeps") + +__filegroups = { +} + +def __nasm(ctx, cmd): + inputs = nasm_scandeps.scandeps(ctx, cmd) + ctx.actions.fix(inputs = cmd.inputs + inputs) + +__handlers = { + "nasm": __nasm, +} + +def __step_config(ctx, step_config): + remote_run = True # Turn this to False when you do file access trace. + rules = [] + for toolchain in ["", "clang_x64"]: + nasm_path = path.join(toolchain, "nasm") + rules.append({ + "name": path.join("nasm", toolchain), + "command_prefix": "python3 ../../build/gn_run_binary.py " + nasm_path, + "inputs": [ + "build/gn_run_binary.py", + ctx.fs.canonpath("./" + nasm_path), + ], + "indirect_inputs": { + "includes": ["*.asm"], + }, + "exclude_input_patterns": [ + "*.stamp", + ], + "handler": "nasm", + "remote": remote_run, + # chromeos generates default.profraw? + "ignore_extra_output_pattern": ".*default.profraw", + "timeout": "2m", + }) + step_config["rules"].extend(rules) + return step_config + +nasm = module( + "nasm", + step_config = __step_config, + filegroups = __filegroups, + handlers = __handlers, +) diff --git a/build/config/siso/nasm_scandeps.star b/build/config/siso/nasm_scandeps.star new file mode 100644 index 0000000..e783a42 --- /dev/null +++ b/build/config/siso/nasm_scandeps.star @@ -0,0 +1,88 @@ +# -*- bazel-starlark -*- +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Siso configuration for nasm scandeps. + +- https://chromium.googlesource.com/chromium/deps/nasm + +gn +- https://chromium.googlesource.com/chromium/deps/nasm/+/refs/heads/main/nasm_assemble.gni + +sample command line: + command = python3 ../../build/gn_run_binary.py nasm -DPIC -felf64 -P ../../third_party/dav1d/config/linux/x64/config.asm -I../../third_party/dav1d/libdav1d/src// -I../../third_party/dav1d/config/linux/x64/ -I./ -I../../ -Igen/ -DSTACK_ALIGNMENT=16 -MD obj/third_party/dav1d/dav1d_asm/${source_name_part}.o.d -o obj/third_party/dav1d/dav1d_asm/${source_name_part}.o ${in} + +""" + +load("@builtin//struct.star", "module") +load("@builtin//path.star", "path") + +def __scan_input(ctx, src, inc_dirs): + inputs = [src] + curdir = path.dir(src) + include_directive_len = len("%include \"") + for line in str(ctx.fs.read(src)).split("\n"): + if not line.startswith("%include \""): + continue + fname = line[include_directive_len:] + i = fname.index("\"") + fname = fname[:i] + for d in [curdir] + inc_dirs: + pathname = path.join(d, fname) + if ctx.fs.exists(pathname): + inputs.extend(__scan_input(ctx, pathname, inc_dirs)) + break + return inputs + +def __scandeps(ctx, cmd): + nasm_args = [] + for i, arg in enumerate(cmd.args): + if path.base(arg) == "nasm": + nasm_args = cmd.args[i + 1:] + break + inc_dirs = [] + skip = False + flag = "" + sources = [] + for i, arg in enumerate(nasm_args): + if flag == "-I": + inc_dirs.append(ctx.fs.canonpath(arg)) + flag = "" + continue + elif flag == "-P": + sources.append(ctx.fs.canonpath(arg)) + flag = "" + continue + elif skip: + skip = False + continue + elif arg == "-o": + skip = True + continue + elif arg == "-MD": + skip = True + continue + elif arg == "-I": + flag = arg + continue + elif arg == "-P": + flag = arg + continue + elif arg.startswith("-I"): + inc_dirs.append(ctx.fs.canonpath(arg[2:])) + continue + elif arg.startswith("-P"): + sources.append(ctx.fs.canonpath(arg[2:])) + continue + elif arg.startswith("-"): + continue + sources.append(ctx.fs.canonpath(arg)) + inputs = [] + for src in sources: + inputs.extend(__scan_input(ctx, src, inc_dirs)) + return inputs + +nasm_scandeps = module( + "nasm_scandeps", + scandeps = __scandeps, +) diff --git a/build/config/siso/proto_linux.star b/build/config/siso/proto_linux.star new file mode 100644 index 0000000..67bc809 --- /dev/null +++ b/build/config/siso/proto_linux.star @@ -0,0 +1,63 @@ +# -*- bazel-starlark -*- +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Siso configuration for proto/linux.""" + +load("@builtin//path.star", "path") +load("@builtin//struct.star", "module") +load("./config.star", "config") +load("./protoc_wrapper.star", "protoc_wrapper") + +__filegroups = { + "third_party/protobuf/python/google:pyprotolib": { + "type": "glob", + "includes": ["*.py"], + }, +} + +def __protoc_wrapper(ctx, cmd): + inputs = protoc_wrapper.scandeps(ctx, cmd.args) + ctx.actions.fix(inputs = cmd.expanded_inputs() + inputs) + +__handlers = { + "protoc_wrapper": __protoc_wrapper, +} + +def __step_config(ctx, step_config): + remote_run = True # Turn this to False when you do file access trace. + step_config["input_deps"].update({ + "third_party/dom_distiller_js/protoc_plugins/util/plugin_protos.py": [ + "third_party/protobuf/python/google:pyprotolib", + ], + }) + step_config["rules"].extend([ + { + "name": "proto_linux/protoc_wrapper", + "command_prefix": "python3 ../../tools/protoc_wrapper/protoc_wrapper.py", + "indirect_inputs": { + "includes": ["*.proto"], + }, + "exclude_input_patterns": [ + "*.o", + "*.a", + "*.h", + "*.cc", + # "*_pb2.py", + ], + "handler": "protoc_wrapper", + "remote": remote_run, + # chromeos generates default.profraw? + "ignore_extra_output_pattern": ".*default.profraw", + # "deps": "depfile", + "output_local": True, + }, + ]) + return step_config + +proto = module( + "proto", + step_config = __step_config, + filegroups = __filegroups, + handlers = __handlers, +) diff --git a/build/config/siso/protoc_wrapper.star b/build/config/siso/protoc_wrapper.star new file mode 100644 index 0000000..ac13220 --- /dev/null +++ b/build/config/siso/protoc_wrapper.star @@ -0,0 +1,112 @@ +# -*- bazel-starlark -*- +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Siso configuration for protoc_wrapper and protoc_java. + +scripts: +- https://chromium.googlesource.com/chromium/src/+/refs/heads/main/tools/protoc_wrapper/protoc_wrapper.py +- https://chromium.googlesource.com/chromium/src/+/refs/heads/main/build/protoc_java.py + +gn: +- https://chromium.googlesource.com/chromium/src/+/refs/heads/main/third_party/protobuf/proto_library.gni +- https://chromium.googlesource.com/chromium/src/+/refs/heads/main/build/config/android/rules.gni + +sample command line: + command = python3 ../../tools/protoc_wrapper/protoc_wrapper.py test.proto --protoc ./protoc --proto-in-dir ../../base/test --descriptor-set-out gen/base/test/test_proto.descriptor --descriptor-set-dependency-file gen/base/test/test_proto.descriptor.d + + command = python3 ../../build/protoc_java.py --depfile gen/android_webview/proto/aw_variations_seed_proto_java__protoc_java.d --protoc ../../third_party/android_protoc/protoc --proto-path ../../android_webview/proto --srcjar gen/android_webview/proto/aw_variations_seed_proto_java__protoc_java.srcjar ../../android_webview/proto/aw_variations_seed.proto +""" + +load("@builtin//struct.star", "module") +load("@builtin//path.star", "path") + +def __protoc_scandeps(ctx, proto, proto_paths = []): + inputs = [proto] + for line in str(ctx.fs.read(proto)).split("\n"): + if line.startswith("import "): + line = line.removeprefix("import ").strip() + line = line.removeprefix("public ").strip() + line = line.removeprefix("\"") + i = line.find("\"") + name = line[:i] + for d in proto_paths: + fname = path.join(d, name) + if ctx.fs.exists(fname): + inputs.extend(__protoc_scandeps(ctx, fname, proto_paths)) + break + return inputs + +def __scandeps(ctx, args): + protoc_wrapper_args = [] + for i, arg in enumerate(args): + if path.base(arg) in ["protoc_wrapper.py", "protoc_java.py"]: + protoc_wrapper_args = args[i + 1:] + break + inputs = [] + protos = [] + proto_in_dir = ctx.fs.canonpath(".") + inc_dirs = [] + flag = "" + flags = ( + "--proto-in-dir", + "--import-dir", + "--protoc", + "--cc-out-dir", + "--py-out-dir", + "--js-out-dir", + "--plugin-out-dir", + "--plugin", + "--plugin-options", + "--cc-options", + "--include", + "--descriptor-set-out", + "--descriptor-set-dependency-file", + "--depfile", # protoc_java + "--protoc", # protoc_java + "--proto-path", # protoc_java + "--srcjar", # protoc_java + ) + for i, arg in enumerate(protoc_wrapper_args): + if flag == "--proto-in-dir": + proto_in_dir = ctx.fs.canonpath(arg) + flag = "" + continue + elif flag == "--import-dir": + inc_dirs.append(ctx.fs.canonpath(arg)) + flag = "" + continue + elif flag == "--plugin": + inputs.append(ctx.fs.canonpath(arg)) + flag = "" + continue + elif flag == "--protoc": + inputs.append(ctx.fs.canonpath(arg)) + flag = "" + continue + elif flag == "--proto-path": + inc_dirs = [ctx.fs.canonpath(arg)] + inc_dirs + flag = "" + continue + elif flag != "": + flag = "" + continue + elif arg in flags: + flag = arg + continue + elif arg.startswith("--import-dir="): + inc_dirs.append(ctx.fs.canonpath(arg.removeprefix("--import-dir="))) + continue + elif arg.startswith("-"): + continue + protos.append(arg) + proto_paths = [proto_in_dir] + inc_dirs + protos = [path.join(proto_in_dir, name) for name in protos] + for proto in protos: + inputs.extend(__protoc_scandeps(ctx, proto, proto_paths = proto_paths)) + return inputs + +protoc_wrapper = module( + "protoc_wrapper", + scandeps = __scandeps, +) diff --git a/build/config/siso/reproxy.star b/build/config/siso/reproxy.star new file mode 100644 index 0000000..8a351f7 --- /dev/null +++ b/build/config/siso/reproxy.star @@ -0,0 +1,264 @@ +# -*- bazel-starlark -*- +# Copyright 2023 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. +"""Siso configuration for rewriting remote calls into reproxy config.""" + +load("@builtin//encoding.star", "json") +load("@builtin//lib/gn.star", "gn") +load("@builtin//struct.star", "module") +load("./rewrapper_cfg.star", "rewrapper_cfg") +load("./clang_code_coverage_wrapper.star", "clang_code_coverage_wrapper") + +__filegroups = {} + +def __parse_rewrapper_cmdline(ctx, cmd): + if not "rewrapper" in cmd.args[0]: + return [], "", False + + # Example command: + # ../../buildtools/reclient/rewrapper + # -cfg=../../buildtools/reclient_cfgs/chromium-browser-clang/rewrapper_linux.cfg + # -exec_root=/path/to/your/chromium/src/ + # ../../third_party/llvm-build/Release+Asserts/bin/clang++ + # [rest of clang args] + # We don't need to care about: + # -exec_root: Siso already knows this. + wrapped_command_pos = -1 + cfg_file = None + for i, arg in enumerate(cmd.args): + if i == 0: + continue + if arg.startswith("-cfg="): + cfg_file = ctx.fs.canonpath(arg.removeprefix("-cfg=")) + continue + if not arg.startswith("-"): + wrapped_command_pos = i + break + if wrapped_command_pos < 1: + fail("couldn't find first non-arg passed to rewrapper for %s" % str(cmd.args)) + return cmd.args[wrapped_command_pos:], cfg_file, True + +def __rewrite_rewrapper(ctx, cmd): + args, cfg_file, wrapped = __parse_rewrapper_cmdline(ctx, cmd) + if not wrapped: + return + if not cfg_file: + fail("couldn't find rewrapper cfg file in %s" % str(cmd.args)) + ctx.actions.fix( + args = args, + reproxy_config = json.encode(rewrapper_cfg.parse(ctx, cfg_file)), + ) + +def __strip_rewrapper(ctx, cmd): + args, _, wrapped = __parse_rewrapper_cmdline(ctx, cmd) + if not wrapped: + return + ctx.actions.fix(args = args) + +# TODO(b/278225415): change gn so this wrapper (and by extension this handler) becomes unnecessary. +def __rewrite_clang_code_coverage_wrapper(ctx, cmd): + # Example command: + # python3 + # ../../build/toolchain/clang_code_coverage_wrapper.py + # --target-os=... + # --files_to_instrument=... + # ../../buildtools/reclient/rewrapper + # -cfg=../../buildtools/reclient_cfgs/chromium-browser-clang/rewrapper_linux.cfg + # -exec_root=/path/to/your/chromium/src/ + # ../../third_party/llvm-build/Release+Asserts/bin/clang++ + # [rest of clang args] + # We don't need to care about: + # most args to clang_code_coverage_wrapper (need --files_to_instrument as tool_input) + # -exec_root: Siso already knows this. + rewrapper_pos = -1 + wrapped_command_pos = -1 + cfg_file = None + for i, arg in enumerate(cmd.args): + if i < 2: + continue + if rewrapper_pos == -1 and not arg.startswith("-"): + rewrapper_pos = i + continue + if rewrapper_pos > 0 and arg.startswith("-cfg="): + cfg_file = ctx.fs.canonpath(arg.removeprefix("-cfg=")) + continue + if rewrapper_pos > 0 and not arg.startswith("-"): + wrapped_command_pos = i + break + if rewrapper_pos < 1: + fail("couldn't find rewrapper in %s" % str(cmd.args)) + if wrapped_command_pos < 1: + fail("couldn't find first non-arg passed to rewrapper for %s" % str(cmd.args)) + if not cfg_file: + fail("couldn't find rewrapper cfg file in %s" % str(cmd.args)) + coverage_wrapper_command = cmd.args[:rewrapper_pos] + cmd.args[wrapped_command_pos:] + clang_command = clang_code_coverage_wrapper.run(ctx, list(coverage_wrapper_command)) + + ctx.actions.fix( + args = clang_command, + reproxy_config = json.encode(rewrapper_cfg.parse(ctx, cfg_file)), + ) + +def __rewrite_action_remote_py(ctx, cmd): + # Example command: + # python3 + # ../../build/util/action_remote.py + # ../../buildtools/reclient/rewrapper + # --custom_processor=mojom_parser + # --cfg=../../buildtools/reclient_cfgs/python/rewrapper_linux.cfg + # --exec_root=/path/to/your/chromium/src/ + # --input_list_paths=gen/gpu/ipc/common/surface_handle__parser__remote_inputs.rsp + # --output_list_paths=gen/gpu/ipc/common/surface_handle__parser__remote_outputs.rsp + # python3 + # ../../mojo/public/tools/mojom/mojom_parser.py + # [rest of mojo args] + # We don't need to care about: + # --exec_root: Siso already knows this. + # --custom_processor: Used by action_remote.py to apply mojo handling. + # --[input,output]_list_paths: We should always use mojo.star for Siso. + wrapped_command_pos = -1 + cfg_file = None + for i, arg in enumerate(cmd.args): + if i < 3: + continue + if arg.startswith("--cfg="): + cfg_file = ctx.fs.canonpath(arg.removeprefix("--cfg=")) + continue + if not arg.startswith("-"): + wrapped_command_pos = i + break + if wrapped_command_pos < 1: + fail("couldn't find action command in %s" % str(cmd.args)) + ctx.actions.fix( + args = cmd.args[wrapped_command_pos:], + reproxy_config = json.encode(rewrapper_cfg.parse(ctx, cfg_file)), + ) + +__handlers = { + "rewrite_rewrapper": __rewrite_rewrapper, + "strip_rewrapper": __strip_rewrapper, + "rewrite_clang_code_coverage_wrapper": __rewrite_clang_code_coverage_wrapper, + "rewrite_action_remote_py": __rewrite_action_remote_py, +} + +def __use_remoteexec(ctx): + if "args.gn" in ctx.metadata: + gn_args = gn.parse_args(ctx.metadata["args.gn"]) + if gn_args.get("use_remoteexec") == "true": + return True + return False + +def __step_config(ctx, step_config): + # New rules to convert commands calling rewrapper to use reproxy instead. + new_rules = [ + # mojo/mojom_bindings_generator will not always have rewrapper args. + # First add this rule for commands with rewrapper args. The native remote rule for non-rewrapper invocations is converted automatically below. + { + "name": "mojo/mojom_bindings_generator_rewrapper", + "action": "mojom_(.*_)?__generator", + "command_prefix": "python3 ../../build/util/action_remote.py ../../buildtools/reclient/rewrapper --cfg=", + "handler": "rewrite_action_remote_py", + }, + # Handle generic action_remote calls. + { + "name": "action_remote", + "command_prefix": "python3 ../../build/util/action_remote.py ../../buildtools/reclient/rewrapper", + "handler": "rewrite_action_remote_py", + }, + ] + + for rule in step_config["rules"]: + # mojo/mojom_parser will always have rewrapper config when use_remoteexec=true. + # Mutate the original step rule to rewrite rewrapper and convert its rewrapper config to reproxy config. + # Stop handling the rule so that it's not modified below. + # TODO(b/292838933): Implement mojom_parser processor in Starlark? + if rule["name"] == "mojo/mojom_parser": + rule.update({ + "command_prefix": "python3 ../../build/util/action_remote.py ../../buildtools/reclient/rewrapper --custom_processor=mojom_parser", + "handler": "rewrite_action_remote_py", + }) + new_rules.insert(0, rule) + continue + + # Replace nacl-clang/clang++ rules without command_prefix, because they will incorrectly match rewrapper. + # Replace the original step rule with one that only rewrites rewrapper and convert its rewrapper config to reproxy config. + if rule["name"].find("nacl-clang") >= 0 and not rule.get("command_prefix"): + new_rule = { + "name": rule["name"], + "action": rule["action"], + "handler": "rewrite_rewrapper", + } + new_rules.append(new_rule) + continue + + # clang will always have rewrapper config when use_remoteexec=true. + # Remove the native siso handling and replace with custom rewrapper-specific handling. + # All other rule values are not reused, instead use rewrapper config via handler. + if rule["name"].startswith("clang/") or rule["name"].startswith("clang-cl/"): + if not rule.get("action"): + fail("clang rule %s found without action" % rule["name"]) + new_rule = { + "name": rule["name"], + "action": rule["action"], + "handler": "rewrite_rewrapper", + } + new_rules.append(new_rule) + continue + + # clang-coverage will always have rewrapper config when use_remoteexec=true. + # Remove the native siso handling and replace with custom rewrapper-specific handling. + # All other rule values are not reused, instead use rewrapper config via handler. + # TODO(b/278225415): change gn so this wrapper (and by extension these rules) become unnecessary. + if rule["name"].startswith("clang-coverage"): + if rule["command_prefix"].find("../../build/toolchain/clang_code_coverage_wrapper.py") < 0: + fail("clang-coverage rule %s found without clang_code_coverage_wrapper.py in command_prefix" % rule["name"]) + new_rule = { + "name": rule["name"], + "command_prefix": rule["command_prefix"], + "handler": "rewrite_clang_code_coverage_wrapper", + } + + # Insert clang-coverage/ rules at the top. + # They are more specific than reproxy clang/ rules, therefore should not be placed after. + new_rules.insert(0, new_rule) + continue + + # Add non-remote rules as-is. + if not rule.get("remote"): + new_rules.append(rule) + continue + + # Finally handle remaining remote rules. It's assumed it is enough to only convert native remote config to reproxy config. + platform_ref = rule.get("platform_ref") + if platform_ref: + platform = step_config["platforms"].get(platform_ref) + if not platform: + fail("Rule %s uses undefined platform '%s'" % (rule["name"], platform_ref)) + else: + platform = step_config.get("platforms", {}).get("default") + if not platform: + fail("Rule %s did not set platform_ref but no default platform exists" % rule["name"]) + rule["reproxy_config"] = { + "platform": platform, + "labels": { + "type": "tool", + }, + "inputs": rule.get("inputs", []), + "canonicalize_working_dir": rule.get("canonicalize_dir", False), + "exec_strategy": "remote", + "exec_timeout": rule.get("timeout", "10m"), + "download_outputs": True, + } + new_rules.append(rule) + + step_config["rules"] = new_rules + return step_config + +reproxy = module( + "reproxy", + enabled = __use_remoteexec, + step_config = __step_config, + filegroups = __filegroups, + handlers = __handlers, +) diff --git a/build/config/siso/rewrapper_cfg.star b/build/config/siso/rewrapper_cfg.star new file mode 100644 index 0000000..741c669 --- /dev/null +++ b/build/config/siso/rewrapper_cfg.star @@ -0,0 +1,61 @@ +# -*- bazel-starlark -*- +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Siso configuration for parsing rewrapper cfg file.""" + +load("@builtin//struct.star", "module") + +def __parse(ctx, cfg_file): + if not cfg_file: + fail("cfg file expected but none found") + if not ctx.fs.exists(cfg_file): + fail("looked for rewrapper cfg %s but not found, is download_remoteexec_cfg set in gclient custom_vars?" % cfg_file) + + reproxy_config = {} + for line in str(ctx.fs.read(cfg_file)).splitlines(): + if line.startswith("canonicalize_working_dir="): + reproxy_config["canonicalize_working_dir"] = line.removeprefix("canonicalize_working_dir=").lower() == "true" + + reproxy_config["download_outputs"] = True + if line.startswith("download_outputs="): + reproxy_config["download_outputs"] = line.removeprefix("download_outputs=").lower() == "true" + + if line.startswith("exec_strategy="): + reproxy_config["exec_strategy"] = line.removeprefix("exec_strategy=") + + if line.startswith("exec_timeout="): + reproxy_config["exec_timeout"] = line.removeprefix("exec_timeout=") + + if line.startswith("inputs="): + reproxy_config["inputs"] = line.removeprefix("inputs=").split(",") + + if line.startswith("labels="): + if "labels" not in reproxy_config: + reproxy_config["labels"] = dict() + for label in line.removeprefix("labels=").split(","): + label_parts = label.split("=") + if len(label_parts) != 2: + fail("not k,v %s" % label) + reproxy_config["labels"][label_parts[0]] = label_parts[1] + + if line.startswith("platform="): + if "platform" not in reproxy_config: + reproxy_config["platform"] = dict() + for label in line.removeprefix("platform=").split(","): + label_parts = label.split("=") + if len(label_parts) != 2: + fail("not k,v %s" % label) + reproxy_config["platform"][label_parts[0]] = label_parts[1] + + if line.startswith("remote_wrapper="): + reproxy_config["remote_wrapper"] = line.removeprefix("remote_wrapper=") + + if line.startswith("server_address="): + reproxy_config["server_address"] = line.removeprefix("server_address=") + return reproxy_config + +rewrapper_cfg = module( + "rewrapper_cfg", + parse = __parse, +) diff --git a/build/config/siso/simple.star b/build/config/siso/simple.star new file mode 100644 index 0000000..71b18d0 --- /dev/null +++ b/build/config/siso/simple.star @@ -0,0 +1,46 @@ +# -*- bazel-starlark -*- +# Copyright 2023 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. +"""Siso configuration for simple steps.""" + +load("@builtin//struct.star", "module") + +def __copy(ctx, cmd): + input = cmd.inputs[0] + out = cmd.outputs[0] + ctx.actions.copy(input, out, recursive = ctx.fs.is_dir(input)) + ctx.actions.exit(exit_status = 0) + +def __stamp(ctx, cmd): + out = cmd.outputs[0] + ctx.actions.write(out) + ctx.actions.exit(exit_status = 0) + +__handlers = { + "copy": __copy, + "stamp": __stamp, +} + +def __step_config(ctx, step_config): + step_config["rules"].extend([ + { + "name": "simple/copy", + "action": "(.*_)?copy", + "handler": "copy", + }, + { + "name": "simple/stamp", + "action": "(.*_)?stamp", + "handler": "stamp", + "replace": True, + }, + ]) + return step_config + +simple = module( + "simple", + step_config = __step_config, + filegroups = {}, + handlers = __handlers, +) diff --git a/build/config/siso/windows.star b/build/config/siso/windows.star new file mode 100644 index 0000000..a6b1296 --- /dev/null +++ b/build/config/siso/windows.star @@ -0,0 +1,32 @@ +# -*- bazel-starlark -*- +# Copyright 2023 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. +"""Siso configuration for Windows.""" + +load("@builtin//struct.star", "module") +load("./clang_windows.star", "clang") +load("./config.star", "config") +load("./reproxy.star", "reproxy") + +__filegroups = {} +__filegroups.update(clang.filegroups) +__handlers = {} +__handlers.update(clang.handlers) +__handlers.update(reproxy.handlers) + +def __step_config(ctx, step_config): + config.check(ctx) + step_config["platforms"] = {} + + step_config = clang.step_config(ctx, step_config) + if reproxy.enabled(ctx): + step_config = reproxy.step_config(ctx, step_config) + return step_config + +chromium = module( + "chromium", + step_config = __step_config, + filegroups = __filegroups, + handlers = __handlers, +) diff --git a/build/config/unwind.gni b/build/config/unwind.gni new file mode 100644 index 0000000..fd2b597 --- /dev/null +++ b/build/config/unwind.gni @@ -0,0 +1,7 @@ +import("//build_overrides/build.gni") + +declare_args() { + # Use in-tree libunwind (buildtools/third_party/libunwind) instead of whatever + # system library provides unwind symbols (e.g. libgcc). + use_custom_libunwind = is_fuchsia || is_android +} diff --git a/build/config/win/BUILD.gn b/build/config/win/BUILD.gn index c323d07..fc1e312 100644 --- a/build/config/win/BUILD.gn +++ b/build/config/win/BUILD.gn @@ -6,11 +6,13 @@ import("//build/config/c++/c++.gni") import("//build/config/chrome_build.gni") import("//build/config/clang/clang.gni") import("//build/config/compiler/compiler.gni") +import("//build/config/rust.gni") import("//build/config/sanitizers/sanitizers.gni") import("//build/config/win/control_flow_guard.gni") import("//build/config/win/visual_studio_version.gni") import("//build/timestamp.gni") import("//build/toolchain/goma.gni") +import("//build/toolchain/rbe.gni") import("//build/toolchain/toolchain.gni") assert(is_win) @@ -41,9 +43,6 @@ declare_args() { # and with this switch, clang emits it like this: # foo/bar.cc:12:34: error: something went wrong use_clang_diagnostics_format = false - - # Indicates whether to use /pdbpagesize:8192 to allow PDBs larger than 4 GiB. - use_large_pdbs = true } # This is included by reference in the //build/config/compiler config that @@ -96,7 +95,7 @@ config("compiler") { cflags += [ "/D__WRL_ENABLE_FUNCTION_STATICS__" ] # Tell clang which version of MSVC to emulate. - cflags += [ "-fmsc-version=1916" ] + cflags += [ "-fmsc-version=1934" ] if (is_component_build) { cflags += [ @@ -119,7 +118,7 @@ config("compiler") { cflags += [ "--target=x86_64-windows" ] } } else if (current_cpu == "arm64") { - cflags += [ "--target=arm64-windows" ] + cflags += [ "--target=aarch64-pc-windows" ] } else { assert(false, "unknown current_cpu " + current_cpu) } @@ -131,13 +130,13 @@ config("compiler") { cflags += [ "-msse3" ] } - if (exec_script("//build/win/use_ansi_codes.py", [], "trim string") == + # Enable ANSI escape codes if something emulating them is around (cmd.exe + # doesn't understand ANSI escape codes by default). Make sure to not enable + # this if goma/remoteexec is in use, because this will lower cache hits. + if (!use_goma && !use_remoteexec && + exec_script("//build/win/use_ansi_codes.py", [], "trim string") == "True") { - cflags += [ - # cmd.exe doesn't understand ANSI escape codes by default, - # so only enable them if something emulating them is around. - "-fansi-escape-codes", - ] + cflags += [ "-fansi-escape-codes" ] } if (use_clang_diagnostics_format) { @@ -171,14 +170,14 @@ config("compiler") { ldflags += [ "/lldignoreenv" ] } - if (use_large_pdbs) { - # This allows PDBs up to 8 GiB in size. This requires lld-link.exe or - # link.exe from VS 2022 or later. - if (!defined(configs)) { - configs = [] - } - configs += [ ":pdb_larger_than_4gb" ] - } + # Some binaries create PDBs larger than 4 GiB. Increasing the PDB page size + # to 8 KiB allows 8 GiB PDBs. The larger page size also allows larger block maps + # which is a PDB limit that was hit in https://crbug.com/1406510. The page size + # can easily be increased in the future to allow even larger PDBs or larger + # block maps. + # This flag requires lld-link.exe or link.exe from VS 2022 or later to create + # the PDBs, and tools from circa 22H2 or later to consume the PDBs. + ldflags += [ "/pdbpagesize:8192" ] if (!is_debug && !is_component_build) { # Enable standard linker optimizations like GC (/OPT:REF) and ICF in static @@ -286,10 +285,7 @@ config("runtime_library") { } } -# Chromium supports running on Windows 7, but if these constants are set to -# Windows 7, then newer APIs aren't made available by the Windows SDK. -# So we set this to Windows 10 and then are careful to check at runtime -# to only call newer APIs when they're available. +# Chromium only supports Windowes 10+. # Some third-party libraries assume that these defines set what version of # Windows is available at runtime. Targets using these libraries need to # manually override this config for their compiles. @@ -340,12 +336,16 @@ config("default_cfg_compiler") { # This is needed to allow functions to be called by code that is built # with CFG enabled, such as system libraries. # The CFG guards are only emitted if |win_enable_cfg_guards| is enabled. - if (is_clang) { - if (win_enable_cfg_guards) { + if (win_enable_cfg_guards) { + if (is_clang) { cflags = [ "/guard:cf" ] - } else { + } + rustflags = [ "-Ccontrol-flow-guard" ] + } else { + if (is_clang) { cflags = [ "/guard:cf,nochecks" ] } + rustflags = [ "-Ccontrol-flow-guard=nochecks" ] } } @@ -358,6 +358,7 @@ config("disable_guards_cfg_compiler") { if (is_clang) { cflags = [ "/guard:cf,nochecks" ] } + rustflags = [ "-Ccontrol-flow-guard=nochecks" ] } config("cfi_linker") { @@ -375,18 +376,32 @@ config("cfi_linker") { } # This is a superset of all the delayloads needed for chrome.exe, chrome.dll, -# chrome_child.dll, and chrome_elf.dll. The linker will automatically ignore -# anything which is not linked to the binary at all. -# Most of the dlls are simply not required at startup (or at all, depending -# on how the browser is used). The following dlls are interconnected and need to -# be delayloaded together to ensure user32 does not load too early or at all, -# depending on the process type: user32, gdi32, comctl32, comdlg32, cryptui, -# d3d9, dwmapi, imm32, msi, ole32, oleacc, rstrtmgr, shell32, shlwapi, and -# uxtheme. -# There are some exceptions to this list which need to be declared separately. -# Some dlls cannot be delayloaded by chrome_child.dll due to the sandbox -# restrictions that prevent them from being loaded properly. Those dlls are -# specified in the separate config below. +# and chrome_elf.dll. The linker will automatically ignore anything which is not +# linked to the binary at all (it is harmless to have an unmatched /delayload). +# +# We delayload most libraries as the dlls are simply not required at startup (or +# at all, depending on the process type). In unsandboxed process they will load +# when first needed. +# +# Some dlls open handles when they are loaded, and we may not want them to be +# loaded in renderers or other sandboxed processes. Conversely, some dlls must +# be loaded before sandbox lockdown. +# +# Some dlls themselves load others - in particular, to avoid unconditionally +# loading user32.dll - we require that the following dlls are all delayloaded: +# user32, gdi32, comctl32, comdlg32, cryptui, d3d9, dwmapi, imm32, msi, ole32, +# oleacc, rstrtmgr, shell32, shlwapi, and uxtheme. +# +# Advapi32.dll is unconditionally loaded at process startup on Windows 10, but +# on Windows 11 it is not, which makes it worthwhile to delay load it. +# Additionally, advapi32.dll exports several functions that are forwarded to +# other DLLs such as cryptbase.dll. If calls to those functions are present but +# there are some processes where the functions are never called then delay +# loading of advapi32.dll avoids pulling in those DLLs (such as cryptbase.dll) +# unnecessarily, even if advapi32.dll itself is loaded. +# +# This config applies to chrome.exe, chrome.dll, chrome_elf.dll (& others). +# # This config should also be used for any test binary whose goal is to run # tests with the full browser. config("delayloads") { @@ -394,6 +409,7 @@ config("delayloads") { "/DELAYLOAD:api-ms-win-core-winrt-error-l1-1-0.dll", "/DELAYLOAD:api-ms-win-core-winrt-l1-1-0.dll", "/DELAYLOAD:api-ms-win-core-winrt-string-l1-1-0.dll", + "/DELAYLOAD:advapi32.dll", "/DELAYLOAD:comctl32.dll", "/DELAYLOAD:comdlg32.dll", "/DELAYLOAD:credui.dll", @@ -420,6 +436,7 @@ config("delayloads") { "/DELAYLOAD:setupapi.dll", "/DELAYLOAD:shell32.dll", "/DELAYLOAD:shlwapi.dll", + "/DELAYLOAD:uiautomationcore.dll", "/DELAYLOAD:urlmon.dll", "/DELAYLOAD:user32.dll", "/DELAYLOAD:usp10.dll", @@ -433,9 +450,10 @@ config("delayloads") { ] } +# This config (along with `:delayloads`) applies to chrome.exe & chrome_elf.dll. +# Entries should not appear in both configs. config("delayloads_not_for_child_dll") { ldflags = [ - "/DELAYLOAD:advapi32.dll", "/DELAYLOAD:crypt32.dll", "/DELAYLOAD:dbghelp.dll", "/DELAYLOAD:dhcpcsvc.dll", @@ -443,7 +461,6 @@ config("delayloads_not_for_child_dll") { "/DELAYLOAD:iphlpapi.dll", "/DELAYLOAD:oleaut32.dll", "/DELAYLOAD:secur32.dll", - "/DELAYLOAD:uiautomationcore.dll", "/DELAYLOAD:userenv.dll", "/DELAYLOAD:winhttp.dll", "/DELAYLOAD:winmm.dll", @@ -485,6 +502,16 @@ config("release_crt") { if (is_component_build) { cflags = [ "/MD" ] + if (rust_prebuilt_stdlib) { + rustflags = [ "-Ctarget-feature=-crt-static" ] + } else { + # /MD specifies msvcrt.lib as the CRT library. Rust needs to agree, so + # we specify it explicitly. Once + # https://github.com/rust-lang/rust/issues/39016 is resolved we should + # instead tell rustc which CRT to use (static/dynamic + release/debug). + rustflags = [ "-Clink-arg=msvcrt.lib" ] + } + if (use_custom_libcxx) { # On Windows, including libcpmt[d]/msvcprt[d] explicitly links the C++ # standard library, which libc++ needs for exception_ptr internals. @@ -492,6 +519,17 @@ config("release_crt") { } } else { cflags = [ "/MT" ] + + if (rust_prebuilt_stdlib) { + rustflags = [ "-Ctarget-feature=+crt-static" ] + } else { + # /MT specifies libcmt.lib as the CRT library. Rust needs to agree, so + # we specify it explicitly. Once + # https://github.com/rust-lang/rust/issues/39016 is resolved we should + # instead tell rustc which CRT to use (static/dynamic + release/debug). + rustflags = [ "-Clink-arg=libcmt.lib" ] + } + if (use_custom_libcxx) { ldflags = [ "/DEFAULTLIB:libcpmt.lib" ] } @@ -502,11 +540,31 @@ config("dynamic_crt") { if (is_debug) { # This pulls in the DLL debug CRT and defines _DEBUG cflags = [ "/MDd" ] + + # /MDd specifies msvcrtd.lib as the CRT library. Rust needs to agree, so + # we specify it explicitly. + # Once https://github.com/rust-lang/rust/issues/39016 is resolved we should + # instead tell rustc which CRT to use (static/dynamic + release/debug). We + # can't support prebuilt stdlib in this path until then. + rustflags = [ "-Clink-arg=msvcrtd.lib" ] + if (use_custom_libcxx) { ldflags = [ "/DEFAULTLIB:msvcprtd.lib" ] } } else { cflags = [ "/MD" ] + + if (rust_prebuilt_stdlib) { + rustflags = [ "-Ctarget-feature=-crt-static" ] + } else { + # /MD specifies msvcrt.lib as the CRT library. Rust needs to agree, so + # we specify it explicitly. + # Once https://github.com/rust-lang/rust/issues/39016 is resolved we + # should instead tell rustc which CRT to use (static/dynamic + + # release/debug). + rustflags = [ "-Clink-arg=msvcrt.lib" ] + } + if (use_custom_libcxx) { ldflags = [ "/DEFAULTLIB:msvcprt.lib" ] } @@ -517,11 +575,31 @@ config("static_crt") { if (is_debug) { # This pulls in the static debug CRT and defines _DEBUG cflags = [ "/MTd" ] + + # /MTd specifies libcmtd.lib as the CRT library. Rust needs to agree, so + # we specify it explicitly. + # Once https://github.com/rust-lang/rust/issues/39016 is resolved we should + # instead tell rustc which CRT to use (static/dynamic + release/debug). We + # can't support prebuilt stdlib in this path until then. + rustflags = [ "-Clink-arg=libcmtd.lib" ] + if (use_custom_libcxx) { ldflags = [ "/DEFAULTLIB:libcpmtd.lib" ] } } else { cflags = [ "/MT" ] + + if (rust_prebuilt_stdlib) { + rustflags = [ "-Ctarget-feature=+crt-static" ] + } else { + # /MT specifies libcmt.lib as the CRT library. Rust needs to agree, so + # we specify it explicitly. + # Once https://github.com/rust-lang/rust/issues/39016 is resolved we + # should instead tell rustc which CRT to use (static/dynamic + + # release/debug). + rustflags = [ "-Clink-arg=libcmt.lib" ] + } + if (use_custom_libcxx) { ldflags = [ "/DEFAULTLIB:libcpmt.lib" ] } @@ -567,6 +645,10 @@ config("default_incremental_linking") { # TODO(thakis): /INCREMENTAL is on by default in link.exe, but not in # lld. ldflags += [ "/OPT:NOREF" ] + + # TODO(crbug.com/1444129): Mixing incrememntal and icf produces an error + # in lld-link. + ldflags += [ "/OPT:NOICF" ] } } else { ldflags = [ "/INCREMENTAL:NO" ] @@ -601,15 +683,3 @@ config("lean_and_mean") { config("nominmax") { defines = [ "NOMINMAX" ] } - -# Some binaries create PDBs larger than 4 GiB. Increasing the PDB page size -# to 8 KiB allows 8 GiB PDBs. The larger page size also allows larger block maps -# which is a PDB limit that was hit in https://crbug.com/1406510. The page size -# can easily be increased in the future to allow even larger PDBs or larger -# block maps. -config("pdb_larger_than_4gb") { - if (!defined(ldflags)) { - ldflags = [] - } - ldflags += [ "/pdbpagesize:8192" ] -} diff --git a/build/config/win/visual_studio_version.gni b/build/config/win/visual_studio_version.gni index 2314ab5..1da479d 100644 --- a/build/config/win/visual_studio_version.gni +++ b/build/config/win/visual_studio_version.gni @@ -5,11 +5,10 @@ declare_args() { # Path to Visual Studio. If empty, the default is used which is to use the # automatic toolchain in depot_tools. If set, you must also set the - # visual_studio_version and wdk_path. + # visual_studio_version, wdk_path and windows_sdk_version. visual_studio_path = "" # Version of Visual Studio pointed to by the visual_studio_path. - # Currently always "2015". visual_studio_version = "" # Directory of the Windows driver kit. If visual_studio_path is empty, this @@ -20,6 +19,9 @@ declare_args() { # This value is the default location, override if you have a different # installation location. windows_sdk_path = "C:\Program Files (x86)\Windows Kits\10" + + # Version of the Windows SDK pointed to by the windows_sdk_path. + windows_sdk_version = "" } if (visual_studio_path == "") { @@ -34,6 +36,8 @@ if (visual_studio_path == "") { } else { assert(visual_studio_version != "", "You must set the visual_studio_version if you set the path") + assert(windows_sdk_version != "", + "You must set the windows_sdk_version if you set the path") assert(wdk_path != "", "You must set the wdk_path if you set the visual studio path") visual_studio_runtime_dirs = [] diff --git a/build/docs/debugging_slow_builds.md b/build/docs/debugging_slow_builds.md index 9bba553..863432a 100644 --- a/build/docs/debugging_slow_builds.md +++ b/build/docs/debugging_slow_builds.md @@ -10,8 +10,19 @@ cd out/Default post_build_ninja_summary.py ``` +Because the build is highly parallelized the `elapsed time` values are usually +not meaningful so the `weighted time` numbers are calculated to approximate +the impact of build steps on wall-clock time. + You can also set `NINJA_SUMMARIZE_BUILD=1` to have this command run -after each `autoninja` invocation (also runs ninja with `-d stats`). +after each `autoninja` invocation. Setting this environment variable also runs +ninja with `-d stats` which causes it to print out internal information such +as StartEdge times, which measures the times to create processes, and it +modifies the `NINJA_STATUS` environment variable to add information such as how +many processes are running at any given time - both are useful for detecting +slow process creation. You can get this last benefit on its own by setting +`NINJA_STATUS=[%r processes, %f/%t @ %o/s : %es ] ` (trailing space is +intentional). To generate a Chrome trace of your most recent build: @@ -21,11 +32,14 @@ ninjatracing/ninjatracing out/Default/.ninja_log > trace.json # Then open in https://ui.perfetto.dev/ ``` +If your build is stuck on a long-running build step you can see what it is by +running `tools/buildstate.py`. + ## Slow Bot Builds Our bots run `ninjatracing` and `post_build_ninja_summary.py` as well. -Find the trace at: `postprocess_for_goma > upload_log > ninja_log`: +Find the trace at: `postprocess for reclient > gsutil upload ninja_log > ninja_log`: * _".ninja_log in table format (full)"_ is for `post_build_ninja_summary.py`. * _"trace viewer (sort_by_end)"_ is for `ninjatracing`. diff --git a/build/docs/writing_gn_templates.md b/build/docs/writing_gn_templates.md index e6eb1fb..9171265 100644 --- a/build/docs/writing_gn_templates.md +++ b/build/docs/writing_gn_templates.md @@ -40,6 +40,9 @@ won't exist for the initial build. depfiles. * Stale paths in depfiles can cause ninja to complain of circular dependencies [in some cases](https://bugs.chromium.org/p/chromium/issues/detail?id=639042). + * Use [`action_helpers.write_depfile()`] to write these. + +[`action_helpers.write_depfile()`]: https://source.chromium.org/chromium/chromium/src/+/main:build/action_helpers.py?q=symbol:%5Cbwrite_depfile ### Ensuring "gn analyze" Knows About your Inputs "gn analyze" is used by bots to run only affected tests and build only affected @@ -136,15 +139,19 @@ Outputs should be atomic and take advantage of `restat=1`. short-circuits a build when output timestamps do not change. This feature is the reason that the total number of build steps sometimes decreases when building.. -* Use [`build_utils.AtomicOutput()`](https://cs.chromium.org/chromium/src/build/android/gyp/util/build_utils.py?rcl=7d6ba28e92bec865a7b7876c35b4621d56fb37d8&l=128) - to perform both of these techniques. +* Use [`action_helpers.atomic_output()`] to perform both of these techniques. + +[`action_helpers.atomic_output()`]: https://source.chromium.org/chromium/chromium/src/+/main:build/action_helpers.py?q=symbol:%5Cbatomic_output Actions should be deterministic in order to avoid hard-to-reproduce bugs. Given identical inputs, they should produce byte-for-byte identical outputs. * Some common mistakes: * Depending on filesystem iteration order. - * Writing timestamps in files (or in zip entries). * Writing absolute paths in outputs. + * Writing timestamps in files (or in zip entries). + * Tip: Use [`zip_helpers.py`] when writing `.zip` files. + +[`zip_helpers.py`]: https://source.chromium.org/chromium/chromium/src/+/main:build/zip_helpers.py ## Style Guide Chromium GN files follow diff --git a/build/dotfile_settings.gni b/build/dotfile_settings.gni index 94b4fb0..50c04a8 100644 --- a/build/dotfile_settings.gni +++ b/build/dotfile_settings.gni @@ -36,7 +36,7 @@ build_dotfile_settings = { "//build/toolchain/nacl/BUILD.gn", "//build/toolchain/toolchain.gni", "//build/toolchain/win/BUILD.gn", - "//build/toolchain/win/toolchain.gni", + "//build/toolchain/win/win_toolchain_data.gni", "//build/toolchain/zos/BUILD.gn", "//build/util/branding.gni", ] diff --git a/build/env_dump.py b/build/env_dump.py index 1eaf8dc..17d30a7 100755 --- a/build/env_dump.py +++ b/build/env_dump.py @@ -9,7 +9,7 @@ import json import optparse import os -import pipes +import shlex import subprocess import sys @@ -32,7 +32,7 @@ def main(): if not options.output_json: parser.error('Requires --output-json option.') - envsetup_cmd = ' '.join(map(pipes.quote, args)) + envsetup_cmd = ' '.join(map(shlex.quote, args)) full_cmd = [ 'bash', '-c', '. %s > /dev/null; %s -d' % (envsetup_cmd, os.path.abspath(__file__)) diff --git a/build/gn_helpers.py b/build/gn_helpers.py index 34a282e..94c1a84 100644 --- a/build/gn_helpers.py +++ b/build/gn_helpers.py @@ -23,10 +23,13 @@ import json import os import re +import shlex +import shutil import sys -_CHROMIUM_ROOT = os.path.join(os.path.dirname(__file__), os.pardir) +_CHROMIUM_ROOT = os.path.abspath( + os.path.join(os.path.dirname(__file__), os.pardir)) BUILD_VARS_FILENAME = 'build_vars.json' IMPORT_RE = re.compile(r'^import\("//(\S+)"\)') @@ -540,3 +543,34 @@ def ReadBuildVars(output_directory): """Parses $output_directory/build_vars.json into a dict.""" with open(os.path.join(output_directory, BUILD_VARS_FILENAME)) as f: return json.load(f) + + +def CreateBuildCommand(output_directory): + """Returns [cmd, -C, output_directory], where |cmd| is auto{siso,ninja}.""" + suffix = '.bat' if sys.platform.startswith('win32') else '' + # Prefer the version on PATH, but fallback to known version if PATH doesn't + # have one (e.g. on bots). + if not shutil.which(f'autoninja{suffix}'): + third_party_prefix = os.path.join(_CHROMIUM_ROOT, 'third_party') + ninja_prefix = os.path.join(third_party_prefix, 'ninja', '') + siso_prefix = os.path.join(third_party_prefix, 'siso', '') + # Also - bots configure reclient manually, and so do not use the "auto" + # wrappers. + ninja_cmd = [f'{ninja_prefix}ninja{suffix}'] + siso_cmd = [f'{siso_prefix}siso{suffix}', 'ninja'] + else: + ninja_cmd = [f'autoninja{suffix}'] + siso_cmd = [f'autosiso{suffix}'] + + if output_directory and os.path.relpath(output_directory) != '.': + ninja_cmd += ['-C', output_directory] + siso_cmd += ['-C', output_directory] + siso_deps = os.path.exists(os.path.join(output_directory, '.siso_deps')) + ninja_deps = os.path.exists(os.path.join(output_directory, '.ninja_deps')) + if siso_deps and ninja_deps: + raise Exception('Found both .siso_deps and .ninja_deps in ' + f'{output_directory}. Not sure which build tool to use. ' + 'Please delete one, or better, run "gn clean".') + if siso_deps: + return siso_cmd + return ninja_cmd diff --git a/build/install-build-deps.py b/build/install-build-deps.py new file mode 100755 index 0000000..ae0614e --- /dev/null +++ b/build/install-build-deps.py @@ -0,0 +1,914 @@ +#!/usr/bin/env python3 + +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# Script to install everything needed to build chromium +# including items requiring sudo privileges. +# See https://chromium.googlesource.com/chromium/src/+/main/docs/linux/build_instructions.md + +import argparse +import functools +import os +import re +import shutil +import subprocess +import sys + + +@functools.lru_cache(maxsize=1) +def build_apt_package_list(): + print("Building apt package list.", file=sys.stderr) + output = subprocess.check_output(["apt-cache", "dumpavail"]).decode() + arch_map = {"i386": ":i386"} + package_regex = re.compile(r"^Package: (.+?)$.+?^Architecture: (.+?)$", + re.M | re.S) + return set(package + arch_map.get(arch, "") + for package, arch in re.findall(package_regex, output)) + + +def package_exists(package_name: str) -> bool: + return package_name in build_apt_package_list() + + +def parse_args(argv): + parser = argparse.ArgumentParser( + description="Install Chromium build dependencies.") + parser.add_argument("--syms", + action="store_true", + help="Enable installation of debugging symbols") + parser.add_argument( + "--no-syms", + action="store_false", + dest="syms", + help="Disable installation of debugging symbols", + ) + parser.add_argument( + "--lib32", + action="store_true", + help="Enable installation of 32-bit libraries, e.g. for V8 snapshot", + ) + parser.add_argument( + "--android", + action="store_true", + help="Enable installation of android dependencies", + ) + parser.add_argument( + "--no-android", + action="store_false", + dest="android", + help="Disable installation of android dependencies", + ) + parser.add_argument("--arm", + action="store_true", + help="Enable installation of arm cross toolchain") + parser.add_argument( + "--no-arm", + action="store_false", + dest="arm", + help="Disable installation of arm cross toolchain", + ) + parser.add_argument( + "--chromeos-fonts", + action="store_true", + help="Enable installation of Chrome OS fonts", + ) + parser.add_argument( + "--no-chromeos-fonts", + action="store_false", + dest="chromeos_fonts", + help="Disable installation of Chrome OS fonts", + ) + parser.add_argument( + "--nacl", + action="store_true", + help="Enable installation of prerequisites for building NaCl", + ) + parser.add_argument( + "--no-nacl", + action="store_false", + dest="nacl", + help="Disable installation of prerequisites for building NaCl", + ) + parser.add_argument( + "--backwards-compatible", + action="store_true", + help= + "Enable installation of packages that are no longer currently needed and" + + "have been removed from this script. Useful for bisection.", + ) + parser.add_argument( + "--no-backwards-compatible", + action="store_false", + dest="backwards_compatible", + help= + "Disable installation of packages that are no longer currently needed and" + + "have been removed from this script.", + ) + parser.add_argument("--no-prompt", + action="store_true", + help="Automatic yes to prompts") + parser.add_argument( + "--quick-check", + action="store_true", + help="Quickly try to determine if dependencies are installed", + ) + parser.add_argument( + "--unsupported", + action="store_true", + help="Attempt installation even on unsupported systems", + ) + + options = parser.parse_args(argv) + + if options.arm or options.android: + options.lib32 = True + + return options + + +def check_lsb_release(): + if not shutil.which("lsb_release"): + print("ERROR: lsb_release not found in $PATH", file=sys.stderr) + print("try: sudo apt-get install lsb-release", file=sys.stderr) + sys.exit(1) + + +@functools.lru_cache(maxsize=1) +def distro_codename(): + return subprocess.check_output(["lsb_release", "--codename", + "--short"]).decode().strip() + + +def check_distro(options): + if options.unsupported or options.quick_check: + return + + distro_id = subprocess.check_output(["lsb_release", "--id", + "--short"]).decode().strip() + + supported_codenames = ["bionic", "focal", "jammy"] + supported_ids = ["Debian"] + + if (distro_codename() not in supported_codenames + and distro_id not in supported_ids): + print( + "WARNING: The following distributions are supported,", + "but distributions not in the list below can also try to install", + "dependencies by passing the `--unsupported` parameter", + "\tUbuntu 18.04 LTS (bionic with EoL April 2028)", + "\tUbuntu 20.04 LTS (focal with EoL April 2030)", + "\tUbuntu 22.04 LTS (jammy with EoL April 2032)", + "\tDebian 10 (buster) or later", + sep="\n", + file=sys.stderr, + ) + sys.exit(1) + + +def check_architecture(): + architecture = subprocess.check_output(["uname", "-m"]).decode().strip() + if architecture not in ["i686", "x86_64"]: + print("Only x86 architectures are currently supported", file=sys.stderr) + sys.exit(1) + + +def check_root(): + if os.geteuid() != 0: + print("Running as non-root user.", file=sys.stderr) + print("You might have to enter your password one or more times for 'sudo'.", + file=sys.stderr) + print(file=sys.stderr) + + +def apt_update(options): + if options.lib32 or options.nacl: + subprocess.check_call(["sudo", "dpkg", "--add-architecture", "i386"]) + subprocess.check_call(["sudo", "apt-get", "update"]) + + +# Packages needed for development +def dev_list(): + packages = [ + "binutils", + "bison", + "bzip2", + "cdbs", + "curl", + "dbus-x11", + "devscripts", + "dpkg-dev", + "elfutils", + "fakeroot", + "flex", + "git-core", + "gperf", + "libasound2-dev", + "libatspi2.0-dev", + "libbrlapi-dev", + "libbz2-dev", + "libc6-dev", + "libcairo2-dev", + "libcap-dev", + "libcups2-dev", + "libcurl4-gnutls-dev", + "libdrm-dev", + "libelf-dev", + "libevdev-dev", + "libffi-dev", + "libfuse2", + "libgbm-dev", + "libglib2.0-dev", + "libglu1-mesa-dev", + "libgtk-3-dev", + "libkrb5-dev", + "libnspr4-dev", + "libnss3-dev", + "libpam0g-dev", + "libpci-dev", + "libpulse-dev", + "libsctp-dev", + "libspeechd-dev", + "libsqlite3-dev", + "libssl-dev", + "libsystemd-dev", + "libudev-dev", + "libva-dev", + "libwww-perl", + "libxshmfence-dev", + "libxslt1-dev", + "libxss-dev", + "libxt-dev", + "libxtst-dev", + "lighttpd", + "locales", + "openbox", + "p7zip", + "patch", + "perl", + "pkg-config", + "rpm", + "ruby", + "subversion", + "uuid-dev", + "wdiff", + "x11-utils", + "xcompmgr", + "xz-utils", + "zip", + ] + + # Packages needed for chromeos only + packages += [ + "libbluetooth-dev", + "libxkbcommon-dev", + "mesa-common-dev", + "zstd", + ] + + if package_exists("realpath"): + packages.append("realpath") + + if package_exists("libjpeg-dev"): + packages.append("libjpeg-dev") + else: + packages.append("libjpeg62-dev") + + if package_exists("libudev1"): + packages.append("libudev1") + else: + packages.append("libudev0") + + if package_exists("libbrlapi0.8"): + packages.append("libbrlapi0.8") + elif package_exists("libbrlapi0.7"): + packages.append("libbrlapi0.7") + elif package_exists("libbrlapi0.6"): + packages.append("libbrlapi0.6") + else: + packages.append("libbrlapi0.5") + + if package_exists("libav-tools"): + packages.append("libav-tools") + + if package_exists("libvulkan-dev"): + packages.append("libvulkan-dev") + + if package_exists("libinput-dev"): + packages.append("libinput-dev") + + # Cross-toolchain strip is needed for building the sysroots. + if package_exists("binutils-arm-linux-gnueabihf"): + packages.append("binutils-arm-linux-gnueabihf") + if package_exists("binutils-aarch64-linux-gnu"): + packages.append("binutils-aarch64-linux-gnu") + if package_exists("binutils-mipsel-linux-gnu"): + packages.append("binutils-mipsel-linux-gnu") + if package_exists("binutils-mips64el-linux-gnuabi64"): + packages.append("binutils-mips64el-linux-gnuabi64") + + # 64-bit systems need a minimum set of 32-bit compat packages for the + # pre-built NaCl binaries. + if "ELF 64-bit" in subprocess.check_output(["file", "-L", + "/sbin/init"]).decode(): + packages.extend(["libc6-i386", "lib32stdc++6"]) + + # lib32gcc-s1 used to be called lib32gcc1 in older distros. + if package_exists("lib32gcc-s1"): + packages.append("lib32gcc-s1") + elif package_exists("lib32gcc1"): + packages.append("lib32gcc1") + + return packages + + +# List of required run-time libraries +def lib_list(): + packages = [ + "lib32z1", + "libasound2", + "libatk1.0-0", + "libatspi2.0-0", + "libc6", + "libcairo2", + "libcap2", + "libcgi-session-perl", + "libcups2", + "libdrm2", + "libegl1", + "libevdev2", + "libexpat1", + "libfontconfig1", + "libfreetype6", + "libgbm1", + "libglib2.0-0", + "libgl1", + "libgtk-3-0", + "libncurses5", + "libpam0g", + "libpango-1.0-0", + "libpangocairo-1.0-0", + "libpci3", + "libpcre3", + "libpixman-1-0", + "libspeechd2", + "libstdc++6", + "libsqlite3-0", + "libuuid1", + "libwayland-egl1", + "libwayland-egl1-mesa", + "libx11-6", + "libx11-xcb1", + "libxau6", + "libxcb1", + "libxcomposite1", + "libxcursor1", + "libxdamage1", + "libxdmcp6", + "libxext6", + "libxfixes3", + "libxi6", + "libxinerama1", + "libxrandr2", + "libxrender1", + "libxtst6", + "x11-utils", + "xvfb", + "zlib1g", + ] + + # Run-time libraries required by chromeos only + packages += [ + "libpulse0", + "libbz2-1.0", + ] + + if package_exists("libffi8"): + packages.append("libffi8") + elif package_exists("libffi7"): + packages.append("libffi7") + elif package_exists("libffi6"): + packages.append("libffi6") + + if package_exists("libpng16-16"): + packages.append("libpng16-16") + else: + packages.append("libpng12-0") + + if package_exists("libnspr4"): + packages.extend(["libnspr4", "libnss3"]) + else: + packages.extend(["libnspr4-0d", "libnss3-1d"]) + + if package_exists("appmenu-gtk"): + packages.append("appmenu-gtk") + if package_exists("libgnome-keyring0"): + packages.append("libgnome-keyring0") + if package_exists("libgnome-keyring-dev"): + packages.append("libgnome-keyring-dev") + if package_exists("libvulkan1"): + packages.append("libvulkan1") + if package_exists("libinput10"): + packages.append("libinput10") + + return packages + + +def lib32_list(options): + if not options.lib32: + print("Skipping 32-bit libraries.", file=sys.stderr) + return [] + print("Including 32-bit libraries.", file=sys.stderr) + + packages = [ + # 32-bit libraries needed for a 32-bit build + # includes some 32-bit libraries required by the Android SDK + # See https://developer.android.com/sdk/installing/index.html?pkg=tools + "libasound2:i386", + "libatk-bridge2.0-0:i386", + "libatk1.0-0:i386", + "libatspi2.0-0:i386", + "libdbus-1-3:i386", + "libegl1:i386", + "libgl1:i386", + "libglib2.0-0:i386", + "libncurses5:i386", + "libnss3:i386", + "libpango-1.0-0:i386", + "libpangocairo-1.0-0:i386", + "libstdc++6:i386", + "libwayland-egl1:i386", + "libx11-xcb1:i386", + "libxcomposite1:i386", + "libxdamage1:i386", + "libxkbcommon0:i386", + "libxrandr2:i386", + "libxtst6:i386", + "zlib1g:i386", + # 32-bit libraries needed e.g. to compile V8 snapshot for Android or armhf + "linux-libc-dev:i386", + "libpci3:i386", + ] + + # When cross building for arm/Android on 64-bit systems the host binaries + # that are part of v8 need to be compiled with -m32 which means + # that basic multilib support is needed. + if "ELF 64-bit" in subprocess.check_output(["file", "-L", + "/sbin/init"]).decode(): + # gcc-multilib conflicts with the arm cross compiler but + # g++-X.Y-multilib gives us the 32-bit support that we need. Find out the + # appropriate value of X and Y by seeing what version the current + # distribution's g++-multilib package depends on. + lines = subprocess.check_output( + ["apt-cache", "depends", "g++-multilib", "--important"]).decode() + pattern = re.compile(r"g\+\+-[0-9.]+-multilib") + packages += re.findall(pattern, lines) + + return packages + + +# Packages that have been removed from this script. Regardless of configuration +# or options passed to this script, whenever a package is removed, it should be +# added here. +def backwards_compatible_list(options): + if not options.backwards_compatible: + print("Skipping backwards compatible packages.", file=sys.stderr) + return [] + print("Including backwards compatible packages.", file=sys.stderr) + + packages = [ + "7za", + "fonts-indic", + "fonts-ipafont", + "fonts-stix", + "fonts-thai-tlwg", + "fonts-tlwg-garuda", + "g++", + "g++-4.8-multilib-arm-linux-gnueabihf", + "gcc-4.8-multilib-arm-linux-gnueabihf", + "g++-9-multilib-arm-linux-gnueabihf", + "gcc-9-multilib-arm-linux-gnueabihf", + "gcc-arm-linux-gnueabihf", + "g++-10-multilib-arm-linux-gnueabihf", + "gcc-10-multilib-arm-linux-gnueabihf", + "g++-10-arm-linux-gnueabihf", + "gcc-10-arm-linux-gnueabihf", + "git-svn", + "language-pack-da", + "language-pack-fr", + "language-pack-he", + "language-pack-zh-hant", + "libappindicator-dev", + "libappindicator1", + "libappindicator3-1", + "libappindicator3-dev", + "libdconf-dev", + "libdconf1", + "libdconf1:i386", + "libexif-dev", + "libexif12", + "libexif12:i386", + "libgbm-dev", + "libgbm-dev-lts-trusty", + "libgbm-dev-lts-xenial", + "libgconf-2-4:i386", + "libgconf2-dev", + "libgl1-mesa-dev", + "libgl1-mesa-dev-lts-trusty", + "libgl1-mesa-dev-lts-xenial", + "libgl1-mesa-glx:i386", + "libgl1-mesa-glx-lts-trusty:i386", + "libgl1-mesa-glx-lts-xenial:i386", + "libgles2-mesa-dev", + "libgles2-mesa-dev-lts-trusty", + "libgles2-mesa-dev-lts-xenial", + "libgtk-3-0:i386", + "libgtk2.0-0", + "libgtk2.0-0:i386", + "libgtk2.0-dev", + "mesa-common-dev", + "mesa-common-dev-lts-trusty", + "mesa-common-dev-lts-xenial", + "msttcorefonts", + "python-dev", + "python-setuptools", + "snapcraft", + "ttf-dejavu-core", + "ttf-indic-fonts", + "ttf-kochi-gothic", + "ttf-kochi-mincho", + "ttf-mscorefonts-installer", + "xfonts-mathml", + ] + + if package_exists("python-is-python2"): + packages.extend(["python-is-python2", "python2-dev"]) + else: + packages.append("python") + + if package_exists("python-crypto"): + packages.append("python-crypto") + + if package_exists("python-numpy"): + packages.append("python-numpy") + + if package_exists("python-openssl"): + packages.append("python-openssl") + + if package_exists("python-psutil"): + packages.append("python-psutil") + + if package_exists("python-yaml"): + packages.append("python-yaml") + + if package_exists("apache2.2-bin"): + packages.append("apache2.2-bin") + else: + packages.append("apache2-bin") + + php_versions = [ + ("php8.1-cgi", "libapache2-mod-php8.1"), + ("php8.0-cgi", "libapache2-mod-php8.0"), + ("php7.4-cgi", "libapache2-mod-php7.4"), + ("php7.3-cgi", "libapache2-mod-php7.3"), + ("php7.2-cgi", "libapache2-mod-php7.2"), + ("php7.1-cgi", "libapache2-mod-php7.1"), + ("php7.0-cgi", "libapache2-mod-php7.0"), + ("php5-cgi", "libapache2-mod-php5"), + ] + + for php_cgi, mod_php in php_versions: + if package_exists(php_cgi): + packages.extend([php_cgi, mod_php]) + break + + return [package for package in packages if package_exists(package)] + + +def arm_list(options): + if not options.arm: + print("Skipping ARM cross toolchain.", file=sys.stderr) + return [] + print("Including ARM cross toolchain.", file=sys.stderr) + + # arm cross toolchain packages needed to build chrome on armhf + packages = [ + "libc6-dev-armhf-cross", + "linux-libc-dev-armhf-cross", + "g++-arm-linux-gnueabihf", + ] + + # Work around for dependency issue Ubuntu: http://crbug.com/435056 + if distro_codename() == "bionic": + packages.extend([ + "g++-5-multilib-arm-linux-gnueabihf", + "gcc-5-multilib-arm-linux-gnueabihf", + "gcc-arm-linux-gnueabihf", + ]) + elif distro_codename() == "focal": + packages.extend([ + "g++-10-multilib-arm-linux-gnueabihf", + "gcc-10-multilib-arm-linux-gnueabihf", + "gcc-arm-linux-gnueabihf", + ]) + elif distro_codename() == "jammy": + packages.extend([ + "gcc-arm-linux-gnueabihf", + "g++-11-arm-linux-gnueabihf", + "gcc-11-arm-linux-gnueabihf", + ]) + + return packages + + +def nacl_list(options): + if not options.nacl: + print("Skipping NaCl, NaCl toolchain, NaCl ports dependencies.", + file=sys.stderr) + return [] + print("Including NaCl, NaCl toolchain, NaCl ports dependencies.", + file=sys.stderr) + + packages = [ + "g++-mingw-w64-i686", + "lib32z1-dev", + "libasound2:i386", + "libcap2:i386", + "libelf-dev:i386", + "libfontconfig1:i386", + "libglib2.0-0:i386", + "libgpm2:i386", + "libncurses5:i386", + "lib32ncurses5-dev", + "libnss3:i386", + "libpango-1.0-0:i386", + "libssl-dev:i386", + "libtinfo-dev", + "libtinfo-dev:i386", + "libtool", + "libuuid1:i386", + "libxcomposite1:i386", + "libxcursor1:i386", + "libxdamage1:i386", + "libxi6:i386", + "libxrandr2:i386", + "libxss1:i386", + "libxtst6:i386", + "texinfo", + "xvfb", + # Packages to build NaCl, its toolchains, and its ports. + "ant", + "autoconf", + "bison", + "cmake", + "gawk", + "intltool", + "xutils-dev", + "xsltproc", + ] + + # Some package names have changed over time + if package_exists("libssl-dev"): + packages.append("libssl-dev:i386") + elif package_exists("libssl1.1"): + packages.append("libssl1.1:i386") + elif package_exists("libssl1.0.2"): + packages.append("libssl1.0.2:i386") + else: + packages.append("libssl1.0.0:i386") + + if package_exists("libtinfo5"): + packages.append("libtinfo5") + + if package_exists("libudev1"): + packages.append("libudev1:i386") + else: + packages.append("libudev0:i386") + + return packages + + +# Debian is in the process of transitioning to automatic debug packages, which +# have the -dbgsym suffix (https://wiki.debian.org/AutomaticDebugPackages). +# Untransitioned packages have the -dbg suffix. And on some systems, neither +# will be available, so exclude the ones that are missing. +def dbg_package_name(package): + if package_exists(package + "-dbgsym"): + return [package + "-dbgsym"] + if package_exists(package + "-dbg"): + return [package + "-dbg"] + return [] + + +def dbg_list(options): + if not options.syms: + print("Skipping debugging symbols.", file=sys.stderr) + return [] + print("Including debugging symbols.", file=sys.stderr) + + packages = [ + dbg_package for package in lib_list() + for dbg_package in dbg_package_name(package) + ] + + # Debugging symbols packages not following common naming scheme + if not dbg_package_name("libstdc++6"): + for version in ["8", "7", "6", "5", "4.9", "4.8", "4.7", "4.6"]: + if package_exists("libstdc++6-%s-dbg" % version): + packages.append("libstdc++6-%s-dbg" % version) + break + + if not dbg_package_name("libatk1.0-0"): + packages.extend(dbg_package_name("libatk1.0")) + + if not dbg_package_name("libpango-1.0-0"): + packages.extend(dbg_package_name("libpango1.0-dev")) + + return packages + + +def package_list(options): + packages = (dev_list() + lib_list() + dbg_list(options) + + lib32_list(options) + arm_list(options) + nacl_list(options) + + backwards_compatible_list(options)) + + # Sort all the :i386 packages to the front, to avoid confusing dpkg-query + # (https://crbug.com/446172). + return sorted(set(packages), key=lambda x: (not x.endswith(":i386"), x)) + + +def missing_packages(packages): + try: + subprocess.run( + ["dpkg-query", "-W", "-f", " "] + packages, + check=True, + capture_output=True, + ) + return [] + except subprocess.CalledProcessError as e: + return [ + line.split(" ")[-1] for line in e.stderr.decode().strip().splitlines() + ] + + +def package_is_installable(package): + result = subprocess.run(["apt-cache", "show", package], capture_output=True) + return result.returncode == 0 + + +def quick_check(options): + if not options.quick_check: + return + + missing = missing_packages(package_list(options)) + if not missing: + sys.exit(0) + + not_installed = [] + unknown = [] + for p in missing: + if package_is_installable(p): + not_installed.append(p) + else: + unknown.append(p) + + if not_installed: + print("WARNING: The following packages are not installed:", file=sys.stderr) + print(" ".join(not_installed), file=sys.stderr) + + if unknown: + print("WARNING: The following packages are unknown to your system", + file=sys.stderr) + print("(maybe missing a repo or need to 'sudo apt-get update'):", + file=sys.stderr) + print(" ".join(unknown), file=sys.stderr) + + sys.exit(1) + + +def find_missing_packages(options): + print("Finding missing packages...", file=sys.stderr) + + packages = package_list(options) + packages_str = " ".join(packages) + print("Packages required: " + packages_str, file=sys.stderr) + + query_cmd = ["apt-get", "--just-print", "install"] + packages + env = os.environ.copy() + env["LANGUAGE"] = "en" + env["LANG"] = "C" + cmd_output = subprocess.check_output(query_cmd, env=env).decode() + lines = cmd_output.splitlines() + + install = [] + for pattern in ( + "The following NEW packages will be installed:", + "The following packages will be upgraded:", + ): + if pattern in lines: + for line in lines[lines.index(pattern) + 1:]: + if not line.startswith(" "): + break + install += line.strip().split(" ") + return install + + +def install_packages(options): + try: + packages = find_missing_packages(options) + if packages: + quiet = ["-qq", "--assume-yes"] if options.no_prompt else [] + subprocess.check_call(["sudo", "apt-get", "install"] + quiet + packages) + print(file=sys.stderr) + else: + print("No missing packages, and the packages are up to date.", + file=sys.stderr) + + except subprocess.CalledProcessError as e: + # An apt-get exit status of 100 indicates that a real error has occurred. + print("`apt-get --just-print install ...` failed", file=sys.stderr) + print("It produced the following output:", file=sys.stderr) + print(e.output.decode(), file=sys.stderr) + print(file=sys.stderr) + print("You will have to install the above packages yourself.", + file=sys.stderr) + print(file=sys.stderr) + sys.exit(100) + + +# Install the Chrome OS default fonts. This must go after running +# apt-get, since install-chromeos-fonts depends on curl. +def install_chromeos_fonts(options): + if not options.chromeos_fonts: + print("Skipping installation of Chrome OS fonts.", file=sys.stderr) + return + print("Installing Chrome OS fonts.", file=sys.stderr) + + dir = os.path.abspath(os.path.dirname(__file__)) + + try: + subprocess.check_call( + ["sudo", + os.path.join(dir, "linux", "install-chromeos-fonts.py")]) + except subprocess.CalledProcessError: + print("ERROR: The installation of the Chrome OS default fonts failed.", + file=sys.stderr) + if (subprocess.check_output( + ["stat", "-f", "-c", "%T", dir], ).decode().startswith("nfs")): + print( + "The reason is that your repo is installed on a remote file system.", + file=sys.stderr) + else: + print( + "This is expected if your repo is installed on a remote file system.", + file=sys.stderr) + + print("It is recommended to install your repo on a local file system.", + file=sys.stderr) + print("You can skip the installation of the Chrome OS default fonts with", + file=sys.stderr) + print("the command line option: --no-chromeos-fonts.", file=sys.stderr) + sys.exit(1) + + +def install_locales(): + print("Installing locales.", file=sys.stderr) + CHROMIUM_LOCALES = [ + "da_DK.UTF-8", "fr_FR.UTF-8", "he_IL.UTF-8", "zh_TW.UTF-8" + ] + LOCALE_GEN = "/etc/locale.gen" + if os.path.exists(LOCALE_GEN): + old_locale_gen = open(LOCALE_GEN).read() + for locale in CHROMIUM_LOCALES: + subprocess.check_call( + ["sudo", "sed", "-i", + "s/^# %s/%s/" % (locale, locale), LOCALE_GEN]) + + # Regenerating locales can take a while, so only do it if we need to. + locale_gen = open(LOCALE_GEN).read() + if locale_gen != old_locale_gen: + subprocess.check_call(["sudo", "locale-gen"]) + else: + print("Locales already up-to-date.", file=sys.stderr) + else: + for locale in CHROMIUM_LOCALES: + subprocess.check_call(["sudo", "locale-gen", locale]) + + +def main(): + options = parse_args(sys.argv[1:]) + check_lsb_release() + check_distro(options) + check_architecture() + quick_check(options) + check_root() + apt_update(options) + install_packages(options) + install_chromeos_fonts(options) + install_locales() + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/build/install-build-deps.sh b/build/install-build-deps.sh index e21a244..7ad84c6 100755 --- a/build/install-build-deps.sh +++ b/build/install-build-deps.sh @@ -4,805 +4,4 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -# Script to install everything needed to build chromium (well, ideally, anyway) -# including items requiring sudo privileges. -# See https://chromium.googlesource.com/chromium/src/+/main/docs/linux/build_instructions.md -# and https://chromium.googlesource.com/chromium/src/+/HEAD/docs/android_build_instructions.md - -usage() { - echo "Usage: $0 [--options]" - echo "Options:" - echo "--[no-]syms: enable or disable installation of debugging symbols" - echo "--lib32: enable installation of 32-bit libraries, e.g. for V8 snapshot" - echo "--[no-]android: enable or disable installation of android dependencies" - echo "--[no-]arm: enable or disable installation of arm cross toolchain" - echo "--[no-]chromeos-fonts: enable or disable installation of Chrome OS"\ - "fonts" - echo "--[no-]nacl: enable or disable installation of prerequisites for"\ - "building standalone NaCl and all its toolchains" - echo "--[no-]backwards-compatible: enable or disable installation of packages - that are no longer currently needed and have been removed from this - script. Useful for bisection." - echo "--no-prompt: silently select standard options/defaults" - echo "--quick-check: quickly try to determine if dependencies are installed" - echo " (this avoids interactive prompts and sudo commands," - echo " so might not be 100% accurate)" - echo "--unsupported: attempt installation even on unsupported systems" - echo "Script will prompt interactively if options not given." - exit 1 -} - -# Build list of apt packages in dpkg --get-selections format. -build_apt_package_list() { - echo "Building apt package list." >&2 - apt-cache dumpavail | \ - python3 -c 'import re,sys; \ -o = sys.stdin.read(); \ -p = {"i386": ":i386"}; \ -f = re.M | re.S; \ -r = re.compile(r"^Package: (.+?)$.+?^Architecture: (.+?)$", f); \ -m = ["%s%s" % (x, p.get(y, "")) for x, y in re.findall(r, o)]; \ -print("\n".join(m))' -} - -# Checks whether a particular package is available in the repos. -# Uses pre-formatted ${apt_package_list}. -# USAGE: $ package_exists -package_exists() { - if [ -z "${apt_package_list}" ]; then - echo "Call build_apt_package_list() prior to calling package_exists()" >&2 - apt_package_list=$(build_apt_package_list) - fi - # `grep` takes a regex string, so the +'s in package names, e.g. "libstdc++", - # need to be escaped. - local escaped="$(echo $1 | sed 's/[\~\+\.\:-]/\\&/g')" - [ ! -z "$(grep "^${escaped}$" <<< "${apt_package_list}")" ] -} - -do_inst_arm=0 -do_inst_nacl=0 -do_inst_android=0 - -while [ "$1" != "" ] -do - case "$1" in - --syms) do_inst_syms=1;; - --no-syms) do_inst_syms=0;; - --lib32) do_inst_lib32=1;; - --android) do_inst_android=1;; - --no-android) do_inst_android=0;; - --arm) do_inst_arm=1;; - --no-arm) do_inst_arm=0;; - --chromeos-fonts) do_inst_chromeos_fonts=1;; - --no-chromeos-fonts) do_inst_chromeos_fonts=0;; - --nacl) do_inst_nacl=1;; - --no-nacl) do_inst_nacl=0;; - --backwards-compatible) do_inst_backwards_compatible=1;; - --no-backwards-compatible) do_inst_backwards_compatible=0;; - --add-cross-tool-repo) add_cross_tool_repo=1;; - --no-prompt) do_default=1 - do_quietly="-qq --assume-yes" - ;; - --quick-check) do_quick_check=1;; - --unsupported) do_unsupported=1;; - *) usage;; - esac - shift -done - -if [ "$do_inst_arm" = "1" ]; then - do_inst_lib32=1 -fi - -if [ "$do_inst_android" = "1" ]; then - do_inst_lib32=1 -fi - -# Check for lsb_release command in $PATH -if ! which lsb_release > /dev/null; then - echo "ERROR: lsb_release not found in \$PATH" >&2 - echo "try: sudo apt-get install lsb-release" >&2 - exit 1; -fi - -distro_codename=$(lsb_release --codename --short) -distro_id=$(lsb_release --id --short) -supported_codenames="(bionic|focal|jammy)" -supported_ids="(Debian)" -if [ 0 -eq "${do_unsupported-0}" ] && [ 0 -eq "${do_quick_check-0}" ] ; then - if [[ ! $distro_codename =~ $supported_codenames && - ! $distro_id =~ $supported_ids ]]; then - echo -e "ERROR: The only supported distros are\n" \ - "\tUbuntu 18.04 LTS (bionic with EoL April 2028)\n" \ - "\tUbuntu 20.04 LTS (focal with EoL April 2030)\n" \ - "\tUbuntu 22.04 LTS (jammy with EoL April 2032)\n" \ - "\tDebian 10 (buster) or later" >&2 - exit 1 - fi - -# Check system architecture - if ! uname -m | egrep -q "i686|x86_64"; then - echo "Only x86 architectures are currently supported" >&2 - exit - fi -fi - -if [ "x$(id -u)" != x0 ] && [ 0 -eq "${do_quick_check-0}" ]; then - echo "Running as non-root user." - echo "You might have to enter your password one or more times for 'sudo'." - echo -fi - -if [ 0 -eq "${do_quick_check-0}" ] ; then - if [ "$do_inst_lib32" = "1" ] || [ "$do_inst_nacl" = "1" ]; then - sudo dpkg --add-architecture i386 - fi - sudo apt-get update -fi - -# Populate ${apt_package_list} for package_exists() parsing. -apt_package_list=$(build_apt_package_list) - -# Packages needed for chromeos only -chromeos_dev_list="libbluetooth-dev libxkbcommon-dev mesa-common-dev zstd" - -if package_exists realpath; then - chromeos_dev_list="${chromeos_dev_list} realpath" -fi - -# Packages needed for development -dev_list="\ - binutils - bison - bzip2 - cdbs - curl - dbus-x11 - dpkg-dev - elfutils - devscripts - fakeroot - flex - git-core - gperf - libasound2-dev - libatspi2.0-dev - libbrlapi-dev - libbz2-dev - libcairo2-dev - libcap-dev - libc6-dev - libcups2-dev - libcurl4-gnutls-dev - libdrm-dev - libelf-dev - libevdev-dev - libffi-dev - libgbm-dev - libglib2.0-dev - libglu1-mesa-dev - libgtk-3-dev - libkrb5-dev - libnspr4-dev - libnss3-dev - libpam0g-dev - libpci-dev - libpulse-dev - libsctp-dev - libspeechd-dev - libsqlite3-dev - libssl-dev - libudev-dev - libva-dev - libwww-perl - libxshmfence-dev - libxslt1-dev - libxss-dev - libxt-dev - libxtst-dev - lighttpd - locales - openbox - p7zip - patch - perl - pkg-config - rpm - ruby - subversion - uuid-dev - wdiff - x11-utils - xcompmgr - xz-utils - zip - $chromeos_dev_list -" - -# 64-bit systems need a minimum set of 32-bit compat packages for the pre-built -# NaCl binaries. -if file -L /sbin/init | grep -q 'ELF 64-bit'; then - dev_list="${dev_list} libc6-i386 lib32stdc++6" - - # lib32gcc-s1 used to be called lib32gcc1 in older distros. - if package_exists lib32gcc-s1; then - dev_list="${dev_list} lib32gcc-s1" - elif package_exists lib32gcc1; then - dev_list="${dev_list} lib32gcc1" - fi -fi - -# Run-time libraries required by chromeos only -chromeos_lib_list="libpulse0 libbz2-1.0" - -# List of required run-time libraries -common_lib_list="\ - lib32z1 - libasound2 - libatk1.0-0 - libatspi2.0-0 - libc6 - libcairo2 - libcap2 - libcgi-session-perl - libcups2 - libdrm2 - libegl1 - libevdev2 - libexpat1 - libfontconfig1 - libfreetype6 - libgbm1 - libglib2.0-0 - libgl1 - libgtk-3-0 - libpam0g - libpango-1.0-0 - libpangocairo-1.0-0 - libpci3 - libpcre3 - libpixman-1-0 - libspeechd2 - libstdc++6 - libsqlite3-0 - libuuid1 - libwayland-egl1 - libwayland-egl1-mesa - libx11-6 - libx11-xcb1 - libxau6 - libxcb1 - libxcomposite1 - libxcursor1 - libxdamage1 - libxdmcp6 - libxext6 - libxfixes3 - libxi6 - libxinerama1 - libxrandr2 - libxrender1 - libxtst6 - x11-utils - xvfb - zlib1g -" - -if package_exists libffi8; then - common_lib_list="${common_lib_list} libffi8" -elif package_exists libffi7; then - common_lib_list="${common_lib_list} libffi7" -elif package_exists libffi6; then - common_lib_list="${common_lib_list} libffi6" -fi - -# Full list of required run-time libraries -lib_list="\ - $common_lib_list - $chromeos_lib_list -" - -# 32-bit libraries needed e.g. to compile V8 snapshot for Android or armhf -lib32_list="linux-libc-dev:i386 libpci3:i386" - -# 32-bit libraries needed for a 32-bit build -# includes some 32-bit libraries required by the Android SDK -# See https://developer.android.com/sdk/installing/index.html?pkg=tools -lib32_list="$lib32_list - libasound2:i386 - libatk-bridge2.0-0:i386 - libatk1.0-0:i386 - libatspi2.0-0:i386 - libdbus-1-3:i386 - libegl1:i386 - libgl1:i386 - libglib2.0-0:i386 - libncurses5:i386 - libnss3:i386 - libpango-1.0-0:i386 - libpangocairo-1.0-0:i386 - libstdc++6:i386 - libwayland-egl1:i386 - libx11-xcb1:i386 - libxcomposite1:i386 - libxdamage1:i386 - libxkbcommon0:i386 - libxrandr2:i386 - libxtst6:i386 - zlib1g:i386 -" - -# Packages that have been removed from this script. Regardless of configuration -# or options passed to this script, whenever a package is removed, it should be -# added here. -backwards_compatible_list="\ - 7za - fonts-indic - fonts-ipafont - fonts-stix - fonts-thai-tlwg - fonts-tlwg-garuda - g++ - g++-4.8-multilib-arm-linux-gnueabihf - gcc-4.8-multilib-arm-linux-gnueabihf - g++-9-multilib-arm-linux-gnueabihf - gcc-9-multilib-arm-linux-gnueabihf - gcc-arm-linux-gnueabihf - g++-10-multilib-arm-linux-gnueabihf - gcc-10-multilib-arm-linux-gnueabihf - g++-10-arm-linux-gnueabihf - gcc-10-arm-linux-gnueabihf - git-svn - language-pack-da - language-pack-fr - language-pack-he - language-pack-zh-hant - libappindicator-dev - libappindicator1 - libappindicator3-1 - libappindicator3-dev - libdconf-dev - libdconf1 - libdconf1:i386 - libexif-dev - libexif12 - libexif12:i386 - libgbm-dev - libgbm-dev-lts-trusty - libgbm-dev-lts-xenial - libgconf-2-4:i386 - libgconf2-dev - libgl1-mesa-dev - libgl1-mesa-dev-lts-trusty - libgl1-mesa-dev-lts-xenial - libgl1-mesa-glx:i386 - libgl1-mesa-glx-lts-trusty:i386 - libgl1-mesa-glx-lts-xenial:i386 - libgles2-mesa-dev - libgles2-mesa-dev-lts-trusty - libgles2-mesa-dev-lts-xenial - libgtk-3-0:i386 - libgtk2.0-0 - libgtk2.0-0:i386 - libgtk2.0-dev - mesa-common-dev - mesa-common-dev-lts-trusty - mesa-common-dev-lts-xenial - msttcorefonts - python-dev - python-setuptools - ttf-dejavu-core - ttf-indic-fonts - ttf-kochi-gothic - ttf-kochi-mincho - ttf-mscorefonts-installer - xfonts-mathml -" - -if package_exists python-is-python2; then - backwards_compatible_list="${backwards_compatible_list} python-is-python2 python2-dev" -else - backwards_compatible_list="${backwards_compatible_list} python" -fi - -if package_exists python-crypto; then - backwards_compatible_list="${backwards_compatible_list} python-crypto" -fi - -if package_exists python-numpy; then - backwards_compatible_list="${backwards_compatible_list} python-numpy" -fi - -if package_exists python-openssl; then - backwards_compatible_list="${backwards_compatible_list} python-openssl" -fi - -if package_exists python-psutil; then - backwards_compatible_list="${backwards_compatible_list} python-psutil" -fi - -if package_exists python-yaml; then - backwards_compatible_list="${backwards_compatible_list} python-yaml" -fi -if package_exists apache2.2-bin; then - backwards_compatible_list="${backwards_compatible_list} apache2.2-bin" -else - backwards_compatible_list="${backwards_compatible_list} apache2-bin" -fi -if package_exists php8.1-cgi; then - backwards_compatible_list="${backwards_compatible_list} php8.1-cgi libapache2-mod-php8.1" -elif package_exists php8.0-cgi; then - backwards_compatible_list="${backwards_compatible_list} php8.0-cgi libapache2-mod-php8.0" -elif package_exists php7.4-cgi; then - backwards_compatible_list="${backwards_compatible_list} php7.4-cgi libapache2-mod-php7.4" -elif package_exists php7.3-cgi; then - backwards_compatible_list="${backwards_compatible_list} php7.3-cgi libapache2-mod-php7.3" -elif package_exists php7.2-cgi; then - backwards_compatible_list="${backwards_compatible_list} php7.2-cgi libapache2-mod-php7.2" -elif package_exists php7.1-cgi; then - backwards_compatible_list="${backwards_compatible_list} php7.1-cgi libapache2-mod-php7.1" -elif package_exists php7.0-cgi; then - backwards_compatible_list="${backwards_compatible_list} php7.0-cgi libapache2-mod-php7.0" -elif package_exists php8.0-cgi; then - backwards_compatible_list="${backwards_compatible_list} php8.0-cgi libapache2-mod-php8.0" -else - backwards_compatible_list="${backwards_compatible_list} php5-cgi libapache2-mod-php5" -fi - -# arm cross toolchain packages needed to build chrome on armhf -arm_list="libc6-dev-armhf-cross - linux-libc-dev-armhf-cross - g++-arm-linux-gnueabihf" - -# Work around for dependency issue Ubuntu: http://crbug.com/435056 -case $distro_codename in - bionic) - arm_list+=" g++-5-multilib-arm-linux-gnueabihf - gcc-5-multilib-arm-linux-gnueabihf - gcc-arm-linux-gnueabihf" - ;; - focal) - arm_list+=" g++-10-multilib-arm-linux-gnueabihf - gcc-10-multilib-arm-linux-gnueabihf - gcc-arm-linux-gnueabihf" - ;; - jammy) - arm_list+=" gcc-arm-linux-gnueabihf - g++-11-arm-linux-gnueabihf - gcc-11-arm-linux-gnueabihf" - ;; -esac - -# Packages to build NaCl, its toolchains, and its ports. -naclports_list="ant autoconf bison cmake gawk intltool xutils-dev xsltproc" -nacl_list="\ - g++-mingw-w64-i686 - lib32z1-dev - libasound2:i386 - libcap2:i386 - libelf-dev:i386 - libfontconfig1:i386 - libglib2.0-0:i386 - libgpm2:i386 - libncurses5:i386 - lib32ncurses5-dev - libnss3:i386 - libpango-1.0-0:i386 - libssl-dev:i386 - libtinfo-dev - libtinfo-dev:i386 - libtool - libuuid1:i386 - libxcomposite1:i386 - libxcursor1:i386 - libxdamage1:i386 - libxi6:i386 - libxrandr2:i386 - libxss1:i386 - libxtst6:i386 - texinfo - xvfb - ${naclports_list} -" - -# Some package names have changed over time -if package_exists libssl-dev; then - nacl_list="${nacl_list} libssl-dev:i386" -elif package_exists libssl1.1; then - nacl_list="${nacl_list} libssl1.1:i386" -elif package_exists libssl1.0.2; then - nacl_list="${nacl_list} libssl1.0.2:i386" -else - nacl_list="${nacl_list} libssl1.0.0:i386" -fi -if package_exists libtinfo5; then - nacl_list="${nacl_list} libtinfo5" -fi -if package_exists libpng16-16; then - lib_list="${lib_list} libpng16-16" -else - lib_list="${lib_list} libpng12-0" -fi -if package_exists libnspr4; then - lib_list="${lib_list} libnspr4 libnss3" -else - lib_list="${lib_list} libnspr4-0d libnss3-1d" -fi -if package_exists libjpeg-dev; then - dev_list="${dev_list} libjpeg-dev" -else - dev_list="${dev_list} libjpeg62-dev" -fi -if package_exists libudev1; then - dev_list="${dev_list} libudev1" - nacl_list="${nacl_list} libudev1:i386" -else - dev_list="${dev_list} libudev0" - nacl_list="${nacl_list} libudev0:i386" -fi -if package_exists libbrlapi0.8; then - dev_list="${dev_list} libbrlapi0.8" -elif package_exists libbrlapi0.7; then - dev_list="${dev_list} libbrlapi0.7" -elif package_exists libbrlapi0.6; then - dev_list="${dev_list} libbrlapi0.6" -else - dev_list="${dev_list} libbrlapi0.5" -fi -if package_exists libav-tools; then - dev_list="${dev_list} libav-tools" -fi - -# Some packages are only needed if the distribution actually supports -# installing them. -if package_exists appmenu-gtk; then - lib_list="$lib_list appmenu-gtk" -fi -if package_exists libgnome-keyring0; then - lib_list="${lib_list} libgnome-keyring0" -fi -if package_exists libgnome-keyring-dev; then - lib_list="${lib_list} libgnome-keyring-dev" -fi -if package_exists libvulkan-dev; then - dev_list="${dev_list} libvulkan-dev" -fi -if package_exists libvulkan1; then - lib_list="${lib_list} libvulkan1" -fi -if package_exists libinput10; then - lib_list="${lib_list} libinput10" -fi -if package_exists libinput-dev; then - dev_list="${dev_list} libinput-dev" -fi -if package_exists snapcraft; then - dev_list="${dev_list} snapcraft" -fi - -# Cross-toolchain strip is needed for building the sysroots. -if package_exists binutils-arm-linux-gnueabihf; then - dev_list="${dev_list} binutils-arm-linux-gnueabihf" -fi -if package_exists binutils-aarch64-linux-gnu; then - dev_list="${dev_list} binutils-aarch64-linux-gnu" -fi -if package_exists binutils-mipsel-linux-gnu; then - dev_list="${dev_list} binutils-mipsel-linux-gnu" -fi -if package_exists binutils-mips64el-linux-gnuabi64; then - dev_list="${dev_list} binutils-mips64el-linux-gnuabi64" -fi - -# When cross building for arm/Android on 64-bit systems the host binaries -# that are part of v8 need to be compiled with -m32 which means -# that basic multilib support is needed. -if file -L /sbin/init | grep -q 'ELF 64-bit'; then - # gcc-multilib conflicts with the arm cross compiler but - # g++-X.Y-multilib gives us the 32-bit support that we need. Find out the - # appropriate value of X and Y by seeing what version the current - # distribution's g++-multilib package depends on. - multilib_package=$(apt-cache depends g++-multilib --important | \ - grep -E --color=never --only-matching '\bg\+\+-[0-9.]+-multilib\b') - lib32_list="$lib32_list $multilib_package" -fi - -if [ "$do_inst_syms" = "1" ]; then - echo "Including debugging symbols." - - # Debian is in the process of transitioning to automatic debug packages, which - # have the -dbgsym suffix (https://wiki.debian.org/AutomaticDebugPackages). - # Untransitioned packages have the -dbg suffix. And on some systems, neither - # will be available, so exclude the ones that are missing. - dbg_package_name() { - if package_exists "$1-dbgsym"; then - echo "$1-dbgsym" - elif package_exists "$1-dbg"; then - echo "$1-dbg" - fi - } - - for package in "${common_lib_list}"; do - dbg_list="$dbg_list $(dbg_package_name ${package})" - done - - # Debugging symbols packages not following common naming scheme - if [ "$(dbg_package_name libstdc++6)" == "" ]; then - if package_exists libstdc++6-8-dbg; then - dbg_list="${dbg_list} libstdc++6-8-dbg" - elif package_exists libstdc++6-7-dbg; then - dbg_list="${dbg_list} libstdc++6-7-dbg" - elif package_exists libstdc++6-6-dbg; then - dbg_list="${dbg_list} libstdc++6-6-dbg" - elif package_exists libstdc++6-5-dbg; then - dbg_list="${dbg_list} libstdc++6-5-dbg" - elif package_exists libstdc++6-4.9-dbg; then - dbg_list="${dbg_list} libstdc++6-4.9-dbg" - elif package_exists libstdc++6-4.8-dbg; then - dbg_list="${dbg_list} libstdc++6-4.8-dbg" - elif package_exists libstdc++6-4.7-dbg; then - dbg_list="${dbg_list} libstdc++6-4.7-dbg" - elif package_exists libstdc++6-4.6-dbg; then - dbg_list="${dbg_list} libstdc++6-4.6-dbg" - fi - fi - if [ "$(dbg_package_name libatk1.0-0)" == "" ]; then - dbg_list="$dbg_list $(dbg_package_name libatk1.0)" - fi - if [ "$(dbg_package_name libpango-1.0-0)" == "" ]; then - dbg_list="$dbg_list $(dbg_package_name libpango1.0-dev)" - fi -else - echo "Skipping debugging symbols." - dbg_list= -fi - -if [ "$do_inst_lib32" = "1" ]; then - echo "Including 32-bit libraries." -else - echo "Skipping 32-bit libraries." - lib32_list= -fi - -if [ "$do_inst_android" = "1" ]; then - echo "Including Android dependencies." -else - echo "Skipping Android dependencies." -fi - -if [ "$do_inst_arm" = "1" ]; then - echo "Including ARM cross toolchain." -else - echo "Skipping ARM cross toolchain." - arm_list= -fi - -if [ "$do_inst_nacl" = "1" ]; then - echo "Including NaCl, NaCl toolchain, NaCl ports dependencies." -else - echo "Skipping NaCl, NaCl toolchain, NaCl ports dependencies." - nacl_list= -fi - -filtered_backwards_compatible_list= -if [ "$do_inst_backwards_compatible" = "1" ]; then - echo "Including backwards compatible packages." - for package in ${backwards_compatible_list}; do - if package_exists ${package}; then - filtered_backwards_compatible_list+=" ${package}" - fi - done -fi - -# The `sort -r -s -t: -k2` sorts all the :i386 packages to the front, to avoid -# confusing dpkg-query (crbug.com/446172). -packages="$( - echo "${dev_list} ${lib_list} ${dbg_list} ${lib32_list} ${arm_list}" \ - "${nacl_list}" ${filtered_backwards_compatible_list} | tr " " "\n" | \ - sort -u | sort -r -s -t: -k2 | tr "\n" " " -)" - -if [ 1 -eq "${do_quick_check-0}" ] ; then - if ! missing_packages="$(dpkg-query -W -f ' ' ${packages} 2>&1)"; then - # Distinguish between packages that actually aren't available to the - # system (i.e. not in any repo) and packages that just aren't known to - # dpkg (i.e. managed by apt). - missing_packages="$(echo "${missing_packages}" | awk '{print $NF}')" - not_installed="" - unknown="" - for p in ${missing_packages}; do - if apt-cache show ${p} > /dev/null 2>&1; then - not_installed="${p}\n${not_installed}" - else - unknown="${p}\n${unknown}" - fi - done - if [ -n "${not_installed}" ]; then - echo "WARNING: The following packages are not installed:" - echo -e "${not_installed}" | sed -e "s/^/ /" - fi - if [ -n "${unknown}" ]; then - echo "WARNING: The following packages are unknown to your system" - echo "(maybe missing a repo or need to 'sudo apt-get update'):" - echo -e "${unknown}" | sed -e "s/^/ /" - fi - exit 1 - fi - exit 0 -fi - -echo "Finding missing packages..." -# Intentionally leaving $packages unquoted so it's more readable. -echo "Packages required: " $packages -echo -query_cmd="apt-get --just-print install $(echo $packages)" -if cmd_output="$(LANGUAGE=en LANG=C $query_cmd)"; then - new_list=$(echo "$cmd_output" | - sed -e '1,/The following NEW packages will be installed:/d;s/^ //;t;d' | - sed 's/ *$//') - upgrade_list=$(echo "$cmd_output" | - sed -e '1,/The following packages will be upgraded:/d;s/^ //;t;d' | - sed 's/ *$//') - if [ -z "$new_list" ] && [ -z "$upgrade_list" ]; then - echo "No missing packages, and the packages are up to date." - else - echo "Installing and upgrading packages: $new_list $upgrade_list." - sudo apt-get install ${do_quietly-} ${new_list} ${upgrade_list} - fi - echo -else - # An apt-get exit status of 100 indicates that a real error has occurred. - - # I am intentionally leaving out the '"'s around query_cmd, - # as this makes it easier to cut and paste the output - echo "The following command failed: " ${query_cmd} - echo - echo "It produced the following output:" - echo "$cmd_output" - echo - echo "You will have to install the above packages yourself." - echo - exit 100 -fi - -# Install the Chrome OS default fonts. This must go after running -# apt-get, since install-chromeos-fonts depends on curl. -if [ "$do_inst_chromeos_fonts" != "0" ]; then - echo - echo "Installing Chrome OS fonts." - dir=`echo $0 | sed -r -e 's/\/[^/]+$//'` - if ! sudo $dir/linux/install-chromeos-fonts.py; then - echo "ERROR: The installation of the Chrome OS default fonts failed." - if [ `stat -f -c %T $dir` == "nfs" ]; then - echo "The reason is that your repo is installed on a remote file system." - else - echo "This is expected if your repo is installed on a remote file system." - fi - echo "It is recommended to install your repo on a local file system." - echo "You can skip the installation of the Chrome OS default fonts with" - echo "the command line option: --no-chromeos-fonts." - exit 1 - fi -else - echo "Skipping installation of Chrome OS fonts." -fi - -echo "Installing locales." -CHROMIUM_LOCALES="da_DK.UTF-8 fr_FR.UTF-8 he_IL.UTF-8 zh_TW.UTF-8" -LOCALE_GEN=/etc/locale.gen -if [ -e ${LOCALE_GEN} ]; then - OLD_LOCALE_GEN="$(cat /etc/locale.gen)" - for CHROMIUM_LOCALE in ${CHROMIUM_LOCALES}; do - sudo sed -i "s/^# ${CHROMIUM_LOCALE}/${CHROMIUM_LOCALE}/" ${LOCALE_GEN} - done - # Regenerating locales can take a while, so only do it if we need to. - if (echo "${OLD_LOCALE_GEN}" | cmp -s ${LOCALE_GEN}); then - echo "Locales already up-to-date." - else - sudo locale-gen - fi -else - for CHROMIUM_LOCALE in ${CHROMIUM_LOCALES}; do - sudo locale-gen ${CHROMIUM_LOCALE} - done -fi +exec "$(cd $(dirname $0) && pwd)/install-build-deps.py" "$@" diff --git a/build/ios/PRESUBMIT.py b/build/ios/PRESUBMIT.py index 0c7a355..a83d1a4 100644 --- a/build/ios/PRESUBMIT.py +++ b/build/ios/PRESUBMIT.py @@ -4,7 +4,6 @@ PRESUBMIT_VERSION = '2.0.0' -USE_PYTHON3 = True TEST_PATTERNS = [r'.+_test.py$'] @@ -12,9 +11,4 @@ def CheckUnitTests(input_api, output_api): # Runs all unit tests under the build/ios folder. return input_api.canned_checks.RunUnitTestsInDirectory( - input_api, - output_api, - '.', - files_to_check=TEST_PATTERNS, - run_on_python2=False, - skip_shebang_check=True) + input_api, output_api, '.', files_to_check=TEST_PATTERNS) diff --git a/build/ios/extension_bundle_data.gni b/build/ios/extension_bundle_data.gni index 78006f1..3e824e8 100644 --- a/build/ios/extension_bundle_data.gni +++ b/build/ios/extension_bundle_data.gni @@ -10,14 +10,23 @@ # name of the extension target to package; the extension # bundle name must be derived from the target name # +# extension_name: +# (optional) name of the extension appex file; derived from +# the target name if omitted +# template("extension_bundle_data") { assert(defined(invoker.extension_target), "extension_target must be defined for $target_name") + _extension_name = get_label_info(invoker.extension_target, "name") + ".appex" + if (defined(invoker.extension_name)) { + _extension_name = invoker.extension_name + } + bundle_data(target_name) { public_deps = [ invoker.extension_target ] outputs = [ "{{bundle_contents_dir}}/PlugIns/{{source_file_part}}" ] - sources = [ get_label_info(invoker.extension_target, "root_out_dir") + "/" + - get_label_info(invoker.extension_target, "name") + ".appex" ] + sources = [ get_label_info(invoker.extension_target, "root_out_dir") + + "/$_extension_name" ] } } diff --git a/build/ios/intent_definition.gni b/build/ios/intent_definition.gni index 29f859c..652ff66 100644 --- a/build/ios/intent_definition.gni +++ b/build/ios/intent_definition.gni @@ -111,7 +111,6 @@ template("intent_definition") { } sources = _generate_source_output - configs += [ "//build/config/compiler:enable_arc" ] deps += [ ":$_compile_intent_bundle", ":$_generate_source_target", diff --git a/build/ios/presubmit_support_test.py b/build/ios/presubmit_support_test.py index 7db63e7..6bbc602 100755 --- a/build/ios/presubmit_support_test.py +++ b/build/ios/presubmit_support_test.py @@ -142,6 +142,24 @@ def testExcludeDuplicates(self): 'test_data/duplicates', '.') self.assertEqual([], results) + def testCheckOutsideGloblistDir(self): + """ + Checks that including files outside the globlist directory is an error. + """ + results = presubmit_support.CheckBundleData( + self.mock_input_api, self.mock_output_api, + 'test_data/outside_globlist_dir', '.') + self.assertEqual(1, len(results)) + + def testCheckIgnoreOutsideGloblistDir(self): + """ + Checks that files outside the globlist directory can be ignored. + """ + results = presubmit_support.CheckBundleData( + self.mock_input_api, self.mock_output_api, + 'test_data/ignore_outside_globlist_dir', '.') + self.assertEqual([], results) + if __name__ == '__main__': unittest.main() diff --git a/build/ios/test_data/ignore_outside_globlist_dir.filelist b/build/ios/test_data/ignore_outside_globlist_dir.filelist new file mode 100644 index 0000000..a306b7e --- /dev/null +++ b/build/ios/test_data/ignore_outside_globlist_dir.filelist @@ -0,0 +1,8 @@ +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +# NOTE: this file is generated by build/ios/update_bundle_filelist.py +# If it requires updating, you should get a presubmit error with +# instructions on how to regenerate. Otherwise, do not edit. +presubmit_support_test.py +test_data/subdirectory/baz.txt diff --git a/build/ios/test_data/ignore_outside_globlist_dir.globlist b/build/ios/test_data/ignore_outside_globlist_dir.globlist new file mode 100644 index 0000000..471a0c4 --- /dev/null +++ b/build/ios/test_data/ignore_outside_globlist_dir.globlist @@ -0,0 +1,8 @@ +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +test_data/subdirectory/* +# push(ignore-relative) +presubmit_support_test.py +# pop(ignore-relative) diff --git a/build/ios/test_data/outside_globlist_dir.filelist b/build/ios/test_data/outside_globlist_dir.filelist new file mode 100644 index 0000000..a81d5ad --- /dev/null +++ b/build/ios/test_data/outside_globlist_dir.filelist @@ -0,0 +1,8 @@ +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +# NOTE: this file is generated by build/ios/update_bundle_filelist.py +# If it requires updating, you should get a presubmit error with +# instructions on how to regenerate. Otherwise, do not edit. +test_data/subdirectory/baz.txt +presubmit_support_test.py diff --git a/build/ios/test_data/outside_globlist_dir.globlist b/build/ios/test_data/outside_globlist_dir.globlist new file mode 100644 index 0000000..31bb073 --- /dev/null +++ b/build/ios/test_data/outside_globlist_dir.globlist @@ -0,0 +1,6 @@ +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +test_data/subdirectory/* +presubmit_support_test.py diff --git a/build/ios/update_bundle_filelist.py b/build/ios/update_bundle_filelist.py index ee8261f..2e21205 100755 --- a/build/ios/update_bundle_filelist.py +++ b/build/ios/update_bundle_filelist.py @@ -58,6 +58,9 @@ _HEADER_HEIGHT = 6 +_START_IGNORE_EXPANSIONS_OUTSIDE_GLOBLIST_DIR = '# push(ignore-relative)' +_STOP_IGNORE_EXPANSIONS_OUTSIDE_GLOBLIST_DIR = '# pop(ignore-relative)' + def parse_filelist(filelist_name): try: @@ -123,60 +126,76 @@ def combine_potentially_repository_root_relative_paths(a, b): def parse_and_expand_globlist(globlist_name, glob_root): - try: - # The following expects glob_root not to end in a trailing slash. - if glob_root.endswith('/'): - glob_root = glob_root[:-1] + # The following expects glob_root not to end in a trailing slash. + if glob_root.endswith('/'): + glob_root = glob_root[:-1] + + check_expansions_outside_globlist_dir = True + globlist_dir = os.path.dirname(globlist_name) + + with open(globlist_name) as globlist: + # Paths in |files| and |to_check| must use unix separators. Using a set + # ensures no unwanted duplicates. The files in |to_check| must be in the + # globroot or a subdirectory. + files = set() + to_check = set() + for g in globlist: + g = g.strip() + + # Ignore blank lines + if not g: + continue + + # Toggle error checking. + if g == _START_IGNORE_EXPANSIONS_OUTSIDE_GLOBLIST_DIR: + check_expansions_outside_globlist_dir = False + elif g == _STOP_IGNORE_EXPANSIONS_OUTSIDE_GLOBLIST_DIR: + check_expansions_outside_globlist_dir = True + + # Ignore comments. + if not g or g.startswith('#'): + continue + + # Exclusions are prefixed with '-'. + is_exclusion = g.startswith('-') + if is_exclusion: + g = g[1:] - with open(globlist_name) as globlist: - # Paths in |files| must use unix separators. Using a set ensures no - # unwanted duplicates. - files = set() - for g in globlist: - g = g.strip() - - # Ignore blank lines and comments. - if not g or g.startswith('#'): - continue + (combined, + root_relative) = combine_potentially_repository_root_relative_paths( + glob_root, g) - # Exclusions are prefixed with '-'. - is_exclusion = g.startswith('-') - if is_exclusion: - g = g[1:] + prefix_size = len(glob_root) + if not root_relative: + # We need to account for the separator. + prefix_size += 1 - (combined, - root_relative) = combine_potentially_repository_root_relative_paths( - glob_root, g) + expansion = glob.glob(combined, recursive=True) - prefix_size = len(glob_root) - if not root_relative: - # We need to account for the separator. - prefix_size += 1 + # Filter out directories. + expansion = [f for f in expansion if os.path.isfile(f)] - expansion = glob.glob(combined, recursive=True) + if check_expansions_outside_globlist_dir: + for f in expansion: + relative = os.path.relpath(f, globlist_dir) + if relative.startswith('..'): + raise Exception(f'Globlist expansion outside globlist dir: {f}') - # Filter out directories. - expansion = [f for f in expansion if os.path.isfile(f)] + # Make relative to |glob_root|. + expansion = [f[prefix_size:] for f in expansion] - # Make relative to |glob_root|. - expansion = [f[prefix_size:] for f in expansion] + # Handle Windows backslashes + expansion = [f.replace('\\', '/') for f in expansion] - # Handle Windows backslashes - expansion = [f.replace('\\', '/') for f in expansion] + # Since paths in |expansion| only use unix separators, it is safe to + # compare for both the purpose of exclusion and addition. + if is_exclusion: + files = files.difference(expansion) + else: + files = files.union(expansion) - # Since paths in |expansion| only use unix separators, it is safe to - # compare for both the purpose of exclusion and addition. - if is_exclusion: - files = files.difference(expansion) - else: - files = files.union(expansion) - - # Return a sorted list. - return sorted(files) - - except Exception as e: - print_error(f'Could not read glob list: {globlist_name}', f'{type(e)}: {e}') - return [] + # Return a sorted list. + return sorted(files) def compare_lists(a, b): @@ -203,7 +222,14 @@ def write_filelist(filelist_name, files, header): def process_filelist(filelist, globlist, globroot, check=False, verbose=False): - files_from_globlist = parse_and_expand_globlist(globlist, globroot) + files_from_globlist = [] + try: + files_from_globlist = parse_and_expand_globlist(globlist, globroot) + except Exception as e: + if verbose: + print_error(f'Could not read glob list: {globlist}', f'{type(e)}: {e}') + return 1 + (files, header) = parse_filelist(filelist) (additions, removals) = compare_lists(files, files_from_globlist) diff --git a/build/lacros/PRESUBMIT.py b/build/lacros/PRESUBMIT.py index 642ee7e..f8b13b8 100644 --- a/build/lacros/PRESUBMIT.py +++ b/build/lacros/PRESUBMIT.py @@ -3,7 +3,6 @@ # found in the LICENSE file. """Presubmit script for changes affecting //build/lacros""" -USE_PYTHON3 = True def _CommonChecks(input_api, output_api): @@ -11,12 +10,7 @@ def _CommonChecks(input_api, output_api): if input_api.is_windows: return [] tests = input_api.canned_checks.GetUnitTestsInDirectory( - input_api, - output_api, - '.', [r'^.+_test\.py$'], - run_on_python2=False, - run_on_python3=True, - skip_shebang_check=True) + input_api, output_api, '.', [r'^.+_test\.py$']) return input_api.RunTests(tests) diff --git a/build/lacros/README.md b/build/lacros/README.md new file mode 100644 index 0000000..be0a243 --- /dev/null +++ b/build/lacros/README.md @@ -0,0 +1,11 @@ +This folder contains code for running lacros in tests. + +This includes: +* test_runner.py +Run linux-lacros related tests. + +* mojo_connection_lacros_launcher +Script for launching lacros for debugging. + +* lacros_resource_sizes.py +Monitoring lacros binary size script used by builders. diff --git a/build/lacros/lacros_resource_sizes.py b/build/lacros/lacros_resource_sizes.py index 6004ae7..bcb471f 100755 --- a/build/lacros/lacros_resource_sizes.py +++ b/build/lacros/lacros_resource_sizes.py @@ -124,6 +124,8 @@ def __eq__(self, other): title='Group: Other PAKs'), _Group(paths=['snapshot_blob.bin'], title='Group: Misc'), _Group(paths=['locales/'], title='Dir: locales'), + _Group(paths=['resources/accessibility/'], + title='Dir: resources/accessibility'), _Group(paths=['WidevineCdm/'], title='Dir: WidevineCdm'), ] diff --git a/build/lacros/lacros_resource_sizes.pydeps b/build/lacros/lacros_resource_sizes.pydeps index c2437ca..dc6a116 100644 --- a/build/lacros/lacros_resource_sizes.pydeps +++ b/build/lacros/lacros_resource_sizes.pydeps @@ -1,5 +1,6 @@ # Generated by running: # build/print_python_deps.py --root build/lacros --output build/lacros/lacros_resource_sizes.pydeps build/lacros/lacros_resource_sizes.py +../../third_party/catapult/third_party/six/six.py ../../third_party/catapult/third_party/vinn/vinn/__init__.py ../../third_party/catapult/third_party/vinn/vinn/_vinn.py ../../third_party/catapult/tracing/tracing/__init__.py diff --git a/build/lacros/mojo_connection_lacros_launcher.py b/build/lacros/mojo_connection_lacros_launcher.py index a0f2cfc..2fb5812 100755 --- a/build/lacros/mojo_connection_lacros_launcher.py +++ b/build/lacros/mojo_connection_lacros_launcher.py @@ -14,7 +14,7 @@ XDG_RUNTIME_DIR=/tmp/ash_chrome_xdg_runtime ./out/ash/chrome \\ --user-data-dir=/tmp/ash-chrome --enable-wayland-server \\ - --no-startup-window --enable-features=LacrosSupport \\ + --no-startup-window --enable-features=LacrosOnly \\ --lacros-mojo-socket-for-testing=/tmp/lacros.sock Then, run this script with '-s' pointing to the same socket path used to diff --git a/build/lacros/test_runner.py b/build/lacros/test_runner.py index 9b1349a..ba15266 100755 --- a/build/lacros/test_runner.py +++ b/build/lacros/test_runner.py @@ -9,7 +9,7 @@ to setup build directory with the lacros-chrome-on-linux build configuration, and corresponding test targets are built successfully. - * Example usages: +Example usages ./build/lacros/test_runner.py test out/lacros/url_unittests ./build/lacros/test_runner.py test out/lacros/browser_tests @@ -44,6 +44,13 @@ will try to find the ash major version and Lacros major version. If ash is newer(major version larger), the runner will not run any tests and just returns success. + +Interactively debugging tests + + Any of the previous examples accept the switches + --gdb + --lldb + to run the tests in the corresponding debugger. """ import argparse @@ -431,6 +438,66 @@ def _ClearDir(dirpath): os.remove(e.path) +def _LaunchDebugger(args, forward_args, test_env): + """Launches the requested debugger. + + This is used to wrap the test invocation in a debugger. It returns the + created Popen class of the debugger process. + + Args: + args (dict): Args for this script. + forward_args (list): Args to be forwarded to the test command. + test_env (dict): Computed environment variables for the test. + """ + logging.info('Starting debugger.') + + # Redirect fatal signals to "ignore." When running an interactive debugger, + # these signals should go only to the debugger so the user can break back out + # of the debugged test process into the debugger UI without killing this + # parent script. + for sig in (signal.SIGTERM, signal.SIGINT): + signal.signal(sig, signal.SIG_IGN) + + # Force the tests into single-process-test mode for debugging unless manually + # specified. Otherwise the tests will run in a child process that the debugger + # won't be attached to and the debugger won't do anything. + if not ("--single-process" in forward_args + or "--single-process-tests" in forward_args): + forward_args += ["--single-process-tests"] + + # Adding --single-process-tests can cause some tests to fail when they're + # run in the same process. Forcing the user to specify a filter will prevent + # a later error. + if not [i for i in forward_args if i.startswith("--gtest_filter")]: + logging.error("""Interactive debugging requested without --gtest_filter + +This script adds --single-process-tests to support interactive debugging but +some tests will fail in this mode unless run independently. To debug a test +specify a --gtest_filter=Foo.Bar to name the test you want to debug. +""") + sys.exit(1) + + # This code attempts to source the debugger configuration file. Some + # users will have this in their init but sourcing it more than once is + # harmless and helps people that haven't configured it. + if args.gdb: + gdbinit_file = os.path.normpath( + os.path.join(os.path.realpath(__file__), "../../../tools/gdb/gdbinit")) + debugger_command = [ + 'gdb', '--init-eval-command', 'source ' + gdbinit_file, '--args' + ] + else: + lldbinit_dir = os.path.normpath( + os.path.join(os.path.realpath(__file__), "../../../tools/lldb")) + debugger_command = [ + 'lldb', '-O', + "script sys.path[:0] = ['%s']" % lldbinit_dir, '-O', + 'script import lldbinit', '--' + ] + debugger_command += [args.command] + forward_args + return subprocess.Popen(debugger_command, env=test_env) + + def _RunTestWithAshChrome(args, forward_args): """Runs tests with ash-chrome. @@ -483,6 +550,7 @@ def _RunTestWithAshChrome(args, forward_args): # Starts Ash-Chrome. tmp_xdg_dir_name = tempfile.mkdtemp() tmp_ash_data_dir_name = tempfile.mkdtemp() + tmp_unique_ash_dir_name = tempfile.mkdtemp() # Please refer to below file for how mojo connection is set up in testing. # //chrome/browser/ash/crosapi/test_mojo_connection_manager.h @@ -502,6 +570,7 @@ def _RunTestWithAshChrome(args, forward_args): '--user-data-dir=%s' % tmp_ash_data_dir_name, '--enable-wayland-server', '--no-startup-window', + '--disable-input-event-activation-protection', '--disable-lacros-keep-alive', '--disable-login-lacros-opening', '--enable-field-trial-config', @@ -524,6 +593,7 @@ def _RunTestWithAshChrome(args, forward_args): logging.info('Running ash with "ASH_WRAPPER": %s', ash_wrapper) ash_cmd = list(ash_wrapper.split()) + ash_cmd + ash_process = None ash_process_has_started = False total_tries = 3 num_tries = 0 @@ -533,6 +603,8 @@ def _RunTestWithAshChrome(args, forward_args): ash_log = None ash_log_path = None + run_tests_in_debugger = args.gdb or args.lldb + if args.ash_logging_path: ash_log_path = args.ash_logging_path # Put ash logs in a separate file on bots. @@ -543,6 +615,12 @@ def _RunTestWithAshChrome(args, forward_args): if summary_file: ash_log_path = os.path.join(os.path.dirname(summary_file), 'ash_chrome.log') + elif run_tests_in_debugger: + # The debugger is unusable when all Ash logs are getting dumped to the + # same terminal. Redirect to a log file if there isn't one specified. + logging.info("Running in the debugger and --ash-logging-path is not " + + "specified, defaulting to the current directory.") + ash_log_path = 'ash_chrome.log' if ash_log_path: ash_log = open(ash_log_path, 'a') @@ -565,8 +643,15 @@ def _RunTestWithAshChrome(args, forward_args): num_tries += 1 ash_start_time = time.monotonic() logging.info('Starting ash-chrome.') + + # Using preexec_fn=os.setpgrp here will detach the forked process from + # this process group before exec-ing Ash. This prevents interactive + # Control-C from being seen by Ash. Otherwise Control-C in a debugger + # can kill Ash out from under the debugger. In non-debugger cases, this + # script attempts to clean up the spawned processes nicely. ash_process = subprocess.Popen(ash_cmd, env=ash_env, + preexec_fn=os.setpgrp, stdout=ash_stdout, stderr=subprocess.STDOUT) @@ -574,6 +659,7 @@ def _RunTestWithAshChrome(args, forward_args): logging.info('Symbolizing ash logs with asan symbolizer.') ash_symbolize_process = subprocess.Popen([_ASAN_SYMBOLIZER_PATH], stdin=ash_process.stdout, + preexec_fn=os.setpgrp, stdout=ash_symbolize_stdout, stderr=subprocess.STDOUT) # Allow ash_process to receive a SIGPIPE if symbolize process exits. @@ -608,21 +694,28 @@ def _RunTestWithAshChrome(args, forward_args): if enable_mojo_crosapi: forward_args.append(lacros_mojo_socket_arg) + forward_args.append('--ash-chrome-path=' + ash_chrome_file) + forward_args.append('--unique-ash-dir=' + tmp_unique_ash_dir_name) + test_env = os.environ.copy() test_env['WAYLAND_DISPLAY'] = ash_wayland_socket_name test_env['EGL_PLATFORM'] = 'surfaceless' test_env['XDG_RUNTIME_DIR'] = tmp_xdg_dir_name - logging.info('Starting test process.') - test_process = subprocess.Popen([args.command] + forward_args, - env=test_env, - stdout=test_stdout, - stderr=subprocess.STDOUT) - if should_symbolize: - logging.info('Symbolizing test logs with asan symbolizer.') - test_symbolize_process = subprocess.Popen([_ASAN_SYMBOLIZER_PATH], - stdin=test_process.stdout) - # Allow test_process to receive a SIGPIPE if symbolize process exits. - test_process.stdout.close() + + if run_tests_in_debugger: + test_process = _LaunchDebugger(args, forward_args, test_env) + else: + logging.info('Starting test process.') + test_process = subprocess.Popen([args.command] + forward_args, + env=test_env, + stdout=test_stdout, + stderr=subprocess.STDOUT) + if should_symbolize: + logging.info('Symbolizing test logs with asan symbolizer.') + test_symbolize_process = subprocess.Popen([_ASAN_SYMBOLIZER_PATH], + stdin=test_process.stdout) + # Allow test_process to receive a SIGPIPE if symbolize process exits. + test_process.stdout.close() return test_process.wait() finally: @@ -633,6 +726,7 @@ def _RunTestWithAshChrome(args, forward_args): shutil.rmtree(tmp_xdg_dir_name, ignore_errors=True) shutil.rmtree(tmp_ash_data_dir_name, ignore_errors=True) + shutil.rmtree(tmp_unique_ash_dir_name, ignore_errors=True) def _RunTestDirectly(args, forward_args): @@ -738,6 +832,14 @@ def Main(): help='Path to an locally built ash-chrome to use for testing. ' 'In general you should build //chrome/test:test_ash_chrome.') + debugger_group = test_parser.add_mutually_exclusive_group() + debugger_group.add_argument('--gdb', + action='store_true', + help='Run the test in GDB.') + debugger_group.add_argument('--lldb', + action='store_true', + help='Run the test in LLDB.') + # This is for version skew testing. The current CI/CQ builder builds # an ash chrome and pass it using --ash-chrome-path. In order to use the same # builder for version skew testing, we use a new argument to override @@ -762,6 +864,11 @@ def Main(): help='Whether to run subprocess log outputs through the asan symbolizer.') args = arg_parser.parse_known_args() + if not hasattr(args[0], "func"): + # No command specified. + print(__doc__) + sys.exit(1) + return args[0].func(args[0], args[1]) diff --git a/build/lacros/test_runner_test.py b/build/lacros/test_runner_test.py index da79423..0e2d665 100755 --- a/build/lacros/test_runner_test.py +++ b/build/lacros/test_runner_test.py @@ -75,7 +75,7 @@ def test_do_not_require_ash_chrome(self, command, mock_popen, mock_download, return_value=['wayland-exo', 'wayland-exo.lock']) @mock.patch.object(tempfile, 'mkdtemp', - side_effect=['/tmp/xdg', '/tmp/ash-data']) + side_effect=['/tmp/xdg', '/tmp/ash-data', '/tmp/unique']) @mock.patch.object(os.environ, 'copy', side_effect=[{}, {}]) @mock.patch.object(os.path, 'exists', return_value=True) @mock.patch.object(os.path, 'isfile', return_value=True) @@ -103,6 +103,7 @@ def test_require_ash_chrome(self, command, mock_popen, mock_download, *_): '--user-data-dir=/tmp/ash-data', '--enable-wayland-server', '--no-startup-window', + '--disable-input-event-activation-protection', '--disable-lacros-keep-alive', '--disable-login-lacros-opening', '--enable-field-trial-config', @@ -122,9 +123,10 @@ def test_require_ash_chrome(self, command, mock_popen, mock_download, *_): test_args = mock_popen.call_args_list[1][0][0] if command == 'lacros_chrome_browsertests': self.assertListEqual([ - command, - '--test-launcher-filter-file=/a/b/filter', + command, '--test-launcher-filter-file=/a/b/filter', '--lacros-mojo-socket-for-testing=/tmp/ash-data/lacros.sock', + '--ash-chrome-path=' + ash_chrome_args[0], + '--unique-ash-dir=/tmp/unique' ], test_args) else: self.assertListEqual(test_args[:len(command_parts)], command_parts) @@ -223,7 +225,7 @@ def test_command_arguments(self, mock_popen, mock_download, _): return_value=['wayland-exo', 'wayland-exo.lock']) @mock.patch.object(tempfile, 'mkdtemp', - side_effect=['/tmp/xdg', '/tmp/ash-data']) + side_effect=['/tmp/xdg', '/tmp/ash-data', '/tmp/unique']) @mock.patch.object(os.environ, 'copy', side_effect=[{}, {}]) @mock.patch.object(os.path, 'exists', return_value=True) @mock.patch.object(os.path, 'isfile', return_value=True) diff --git a/build/linux/install-chromeos-fonts.py b/build/linux/install-chromeos-fonts.py index 35cd3bc..c0634b5 100755 --- a/build/linux/install-chromeos-fonts.py +++ b/build/linux/install-chromeos-fonts.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# Copyright 2013 The Chromium Authors. All rights reserved. +# Copyright 2013 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. @@ -7,7 +7,6 @@ # This script can be run manually (as root), but is also run as part # install-build-deps.sh. -from __future__ import print_function import os import shutil @@ -104,7 +103,12 @@ def main(args): true true hintslight - rgb + + none diff --git a/build/linux/strip_binary.py b/build/linux/strip_binary.py index c08b993..82801c7 100755 --- a/build/linux/strip_binary.py +++ b/build/linux/strip_binary.py @@ -1,6 +1,6 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # -# Copyright 2021 The Chromium Authors. All rights reserved. +# Copyright 2021 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. diff --git a/build/linux/sysroot_scripts/build_and_upload.py b/build/linux/sysroot_scripts/build_and_upload.py index 0301130..9e3338a 100755 --- a/build/linux/sysroot_scripts/build_and_upload.py +++ b/build/linux/sysroot_scripts/build_and_upload.py @@ -1,33 +1,29 @@ #!/usr/bin/env python3 -# Copyright 2016 The Chromium Authors. All rights reserved. +# Copyright 2016 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -"""Automates running BuildPackageLists, BuildSysroot, and -UploadSysroot for each supported arch of each sysroot creator. +"""Automates running sysroot-creator.sh for each supported arch. """ -from __future__ import print_function -import glob import hashlib import json import multiprocessing import os -import re -import string +import shlex import subprocess import sys +ARCHES = ("amd64", "i386", "armhf", "arm64", "armel", "mipsel", "mips64el") -def run_script(args): - fnull = open(os.devnull, 'w') - subprocess.check_call(args, stdout=fnull, stderr=fnull) +DEFAULT_URL_PREFIX = "https://commondatastorage.googleapis.com/" \ + "chrome-linux-sysroot/toolchain" def sha1sumfile(filename): sha1 = hashlib.sha1() - with open(filename, 'rb') as f: + with open(filename, "rb") as f: while True: data = f.read(65536) if not data: @@ -37,52 +33,58 @@ def sha1sumfile(filename): def get_proc_output(args): - return subprocess.check_output(args, encoding='utf-8').strip() + return subprocess.check_output(args, encoding="utf-8").strip() -def build_and_upload(script_path, distro, release, arch, lock): +def build_and_upload(script_path, distro, release, key, arch, lock): script_dir = os.path.dirname(os.path.realpath(__file__)) - run_script([script_path, 'BuildSysroot' + arch]) - run_script([script_path, 'UploadSysroot' + arch]) + subprocess.check_output([script_path, "build", arch]) + subprocess.check_output([script_path, "upload", arch]) - tarball = '%s_%s_%s_sysroot.tar.xz' % (distro, release, arch.lower()) + tarball = "%s_%s_%s_sysroot.tar.xz" % (distro, release, arch.lower()) tarxz_path = os.path.join(script_dir, "..", "..", "..", "out", "sysroot-build", release, tarball) sha1sum = sha1sumfile(tarxz_path) - sysroot_dir = '%s_%s_%s-sysroot' % (distro, release, arch.lower()) + sysroot_dir = "%s_%s_%s-sysroot" % (distro, release, arch.lower()) sysroot_metadata = { - 'Tarball': tarball, - 'Sha1Sum': sha1sum, - 'SysrootDir': sysroot_dir, + "Key": key, + "Sha1Sum": sha1sum, + "SysrootDir": sysroot_dir, + "Tarball": tarball, + "URL": DEFAULT_URL_PREFIX, } with lock: - fname = os.path.join(script_dir, 'sysroots.json') + fname = os.path.join(script_dir, "sysroots.json") sysroots = json.load(open(fname)) - with open(fname, 'w') as f: + with open(fname, "w") as f: sysroots["%s_%s" % (release, arch.lower())] = sysroot_metadata f.write( - json.dumps( - sysroots, sort_keys=True, indent=4, separators=(',', ': '))) - f.write('\n') + json.dumps(sysroots, sort_keys=True, indent=4, + separators=(",", ": "))) + f.write("\n") def main(): script_dir = os.path.dirname(os.path.realpath(__file__)) + script_path = os.path.join(script_dir, "sysroot-creator.sh") + lexer = shlex.shlex(open(script_path).read(), posix=True) + lexer.wordchars += "=" + vars = dict(kv.split("=") for kv in list(lexer) if "=" in kv) + distro = vars["DISTRO"] + release = vars["RELEASE"] + key = "%s-%s" % (vars["ARCHIVE_TIMESTAMP"], vars["SYSROOT_RELEASE"]) + procs = [] lock = multiprocessing.Lock() - for filename in glob.glob(os.path.join(script_dir, 'sysroot-creator-*.sh')): - script_path = os.path.join(script_dir, filename) - distro = get_proc_output([script_path, 'PrintDistro']) - release = get_proc_output([script_path, 'PrintRelease']) - architectures = get_proc_output([script_path, 'PrintArchitectures']) - for arch in architectures.split('\n'): - proc = multiprocessing.Process( - target=build_and_upload, - args=(script_path, distro, release, arch, lock)) - procs.append(("%s %s (%s)" % (distro, release, arch), proc)) - proc.start() + for arch in ARCHES: + proc = multiprocessing.Process( + target=build_and_upload, + args=(script_path, distro, release, key, arch, lock), + ) + procs.append(("%s %s (%s)" % (distro, release, arch), proc)) + proc.start() for _, proc in procs: proc.join() @@ -96,5 +98,5 @@ def main(): return failures -if __name__ == '__main__': +if __name__ == "__main__": sys.exit(main()) diff --git a/build/linux/sysroot_scripts/debian_archive_unstable.gpg b/build/linux/sysroot_scripts/debian_archive_unstable.gpg deleted file mode 100644 index 81e2624..0000000 Binary files a/build/linux/sysroot_scripts/debian_archive_unstable.gpg and /dev/null differ diff --git a/build/linux/sysroot_scripts/generate_debian_archive_unstable_gpg.sh b/build/linux/sysroot_scripts/generate_debian_archive_unstable_gpg.sh deleted file mode 100755 index 326ff21..0000000 --- a/build/linux/sysroot_scripts/generate_debian_archive_unstable_gpg.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/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 (11/bullseye) - "73A4F27B8DD47936" - # Debian Security Archive Automatic Signing Key (11/bullseye) - "A48449044AAD5C5D" - # Debian Stable Release Key (11/bullseye) - "605C66F00D6C9793" - # Debian Stable Release Key (10/buster) - "DCC9EFBF77E11517" - # Debian Archive Automatic Signing Key (10/buster) - "DC30D7C23CBBABEE" - # Debian Security Archive Automatic Signing Key (10/buster) - "4DFAB270CAA96DFA" - # 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 --keyserver keyserver.ubuntu.com --recv-keys ${KEYS[@]} -gpg --output "${SCRIPT_DIR}/debian_archive_unstable.gpg" --export ${KEYS[@]} diff --git a/build/linux/sysroot_scripts/generate_keyring.sh b/build/linux/sysroot_scripts/generate_keyring.sh index 7b17730..87cecab 100755 --- a/build/linux/sysroot_scripts/generate_keyring.sh +++ b/build/linux/sysroot_scripts/generate_keyring.sh @@ -9,6 +9,10 @@ set -o errexit SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" KEYS=( + # Debian Archive Automatic Signing Key (12/bookworm) + "6ED0E7B82643E131" + # Debian Stable Release Key (12/bookworm) + "F8D2585B8783D481" # Debian Archive Automatic Signing Key (11/bullseye) "73A4F27B8DD47936" # Debian Security Archive Automatic Signing Key (11/bullseye) @@ -21,20 +25,6 @@ KEYS=( "DC30D7C23CBBABEE" # Debian Security Archive Automatic Signing Key (10/buster) "4DFAB270CAA96DFA" - # 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 --keyserver keyserver.ubuntu.com --recv-keys ${KEYS[@]} diff --git a/build/linux/sysroot_scripts/generated_package_lists/bullseye.amd64 b/build/linux/sysroot_scripts/generated_package_lists/bullseye.amd64 index 9f7f87a..b782e59 100644 --- a/build/linux/sysroot_scripts/generated_package_lists/bullseye.amd64 +++ b/build/linux/sysroot_scripts/generated_package_lists/bullseye.amd64 @@ -1,391 +1,409 @@ -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/alsa-lib/libasound2_1.2.4-1.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/alsa-lib/libasound2-dev_1.2.4-1.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/atk1.0/libatk1.0-0_2.38.0-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/atk1.0/libatk1.0-dev_2.38.0-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.38.0-4~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.38.0-4~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.44.1-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.44.1-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/attr/libattr1_2.4.48-6_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/audit/libaudit1_3.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/avahi/libavahi-client3_0.8-5+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/avahi/libavahi-common3_0.8-5+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/bluez/libbluetooth3_5.55-3.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/bluez/libbluetooth-dev_5.55-3.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/brotli/libbrotli1_1.0.9-2+b2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/brotli/libbrotli-dev_1.0.9-2+b2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo2_1.16.0-5_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo2-dev_1.16.0-5_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-5_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-5_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/colord/libcolord2_1.4.5-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcups2_2.3.3op2-3+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcups2-dev_2.3.3op2-3+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcupsimage2_2.3.3op2-3+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcupsimage2-dev_2.3.3op2-3+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/curl/libcurl3-gnutls_7.85.0-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/curl/libcurl4-gnutls-dev_7.85.0-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.27+dfsg-2.1+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.8_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-6_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/dbus/libdbus-1-3_1.12.20-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/dbus/libdbus-1-dev_1.12.20-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/double-conversion/libdouble-conversion3_3.1.5-6.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.46.5-2~bpo11+2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/e2fsprogs/libcom-err2_1.46.5-2~bpo11+2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/elfutils/libelf1_0.187-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/elfutils/libelf-dev_0.187-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/expat/libexpat1_2.2.10-2+deb11u3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/expat/libexpat1-dev_2.2.10-2+deb11u3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/flac/libflac8_1.3.3-2+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/flac/libflac-dev_1.3.3-2+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-4.2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fontconfig/libfontconfig-dev_2.13.1-4.2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/freetype/libfreetype6_2.10.4+dfsg-1+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/freetype/libfreetype-dev_2.10.4+dfsg-1+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fribidi/libfribidi0_1.0.8-2+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fribidi/libfribidi-dev_1.0.8-2+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libasan6_10.2.1-6_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libatomic1_10.2.1-6_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libgcc-10-dev_10.2.1-6_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libgcc-s1_10.2.1-6_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libgomp1_10.2.1-6_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libitm1_10.2.1-6_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/liblsan0_10.2.1-6_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libquadmath0_10.2.1-6_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libstdc++-10-dev_10.2.1-6_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libstdc++6_10.2.1-6_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libtsan0_10.2.1-6_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libubsan1_10.2.1-6_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-0_2.42.2+dfsg-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-dev_2.42.2+dfsg-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glib2.0/libglib2.0-0_2.66.8-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glib2.0/libglib2.0-dev_2.66.8-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glibc/libc6_2.31-13+deb11u5_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glibc/libc6-dev_2.31-13+deb11u5_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls28-dev_3.7.1-5+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls30_3.7.1-5+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls-dane0_3.7.1-5+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls-openssl27_3.7.1-5+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutlsxx28_3.7.1-5+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.4+dfsg1-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.4+dfsg1-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphite2/libgraphite2-3_1.3.14-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphite2/libgraphite2-dev_1.3.14-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.33-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.24-4+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.24-4+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk4/libgtk-4-1_4.8.1+ds-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk4/libgtk-4-dev_4.8.1+ds-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz0b_2.7.4-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.7.4-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.7.4-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.7.4-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/i/icu/libicu67_67.1-7_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/j/jbigkit/libjbig-dev_2.1-3.1+b2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.6.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/keyutils/libkeyutils1_1.6.1-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/krb5-multidev_1.18.3-6+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libgssrpc4_1.18.3-6+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libk5crypto3_1.18.3-6+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkadm5clnt-mit12_1.18.3-6+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkadm5srv-mit12_1.18.3-6+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkdb5-10_1.18.3-6+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkrb5-3_1.18.3-6+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkrb5-dev_1.18.3-6+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkrb5support0_1.18.3-6+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libb/libbsd/libbsd0_0.11.3-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcap2/libcap2_2.44-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcap2/libcap-dev_2.44-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2.2+b1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcloudproviders/libcloudproviders0_0.3.0-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdatrie/libdatrie1_0.2.13-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdatrie/libdatrie-dev_0.2.13-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr492+repack1-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr492+repack1-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr492+repack1-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr492+repack1-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdeflate/libdeflate0_1.10-2~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdeflate/libdeflate-dev_1.10-2~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm2_2.4.104-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.104-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-dev_2.4.104-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-intel1_2.4.104-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.104-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.104-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libepoxy/libepoxy0_1.5.8-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.8-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libevdev/libevdev2_1.11.0+dfsg-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libevdev/libevdev-dev_1.11.0+dfsg-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libevent/libevent-2.1-7_2.1.12-stable-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libf/libffi/libffi7_3.3-6_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libf/libffi/libffi-dev_3.3-6_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.7-6_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.7-6_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libegl1_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libegl-dev_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgl1_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgl-dev_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgles1_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgles2_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgles-dev_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglvnd0_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglvnd-dev_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglx0_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglx-dev_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libopengl0_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgpg-error/libgpg-error0_1.38-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.38-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgudev/libgudev-1.0-0_234-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libice/libice6_1.0.10-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libidn2/libidn2-0_2.3.0-5_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libidn/libidn11_1.33-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libinput/libinput10_1.16.4-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libinput/libinput-dev_1.16.4-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.0.6-4_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_2.0.6-4_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjsoncpp/libjsoncpp24_1.9.4-4_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.9.4-4_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libm/libmd/libmd0_1.0.3-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libn/libnsl/libnsl2_1.3.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b10_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libo/libogg/libogg0_1.3.4-0.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libo/libogg/libogg-dev_1.3.4-0.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpciaccess/libpciaccess0_0.16-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpsl/libpsl5_0.21.0-1.2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libselinux/libselinux1_3.1-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libselinux/libselinux1-dev_3.1-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsepol/libsepol1_3.1-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsepol/libsepol1-dev_3.1-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsm/libsm6_1.2.3-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsndfile/libsndfile1_1.0.31-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.72.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.72.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libssh2/libssh2-1_1.9.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libthai/libthai0_0.1.28-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libthai/libthai-dev_0.1.28-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libtirpc/libtirpc3_1.3.1-1+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libtool/libltdl7_2.4.6-15_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libu/libunistring/libunistring2_0.9.10-4_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libu/libutempter/libutempter0_1.2.1-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libu/libutempter/libutempter-dev_1.2.1-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva2_2.14.0-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-dev_2.14.0-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-drm2_2.14.0-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-glx2_2.14.0-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-wayland2_2.14.0-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-x11-2_2.14.0-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libvorbis/libvorbis0a_1.3.7-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.7-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwacom/libwacom2_1.8-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebp6_0.6.1-2.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-6_1.7.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-dev_1.7.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-xcb1_1.7.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-xcb-dev_1.7.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxau/libxau6_1.0.9-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxau/libxau-dev_1.0.9-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb1_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb1-dev_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri2-0_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri3-0_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri3-dev_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-glx0_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-present0_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-present-dev_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-randr0_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-randr0-dev_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-render0_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-render0-dev_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shape0_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shape0-dev_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shm0_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-sync1_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-sync-dev_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xfixes0_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xfixes0-dev_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xinerama0_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xinput0_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xkb1_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.5-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.5-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcrypt/libcrypt1_4.4.18-4_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcrypt/libcrypt-dev_4.4.18-4_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxext/libxext6_1.3.3-1.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxext/libxext-dev_1.3.3-1.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxi/libxi6_1.7.10-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxi/libxi-dev_1.7.10-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxkbcommon/libxkbcommon0_1.0.3-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_1.0.3-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxkbcommon/libxkbcommon-x11-0_1.0.3-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxml2/libxml2_2.9.10+dfsg-6.7+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxml2/libxml2-dev_2.9.10+dfsg-6.7+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxshmfence/libxshmfence-dev_1.3-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxslt/libxslt1.1_1.1.34-4+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxslt/libxslt1-dev_1.1.34-4+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxss/libxss1_1.2.3-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxt/libxt6_1.2.0-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxt/libxt-dev_1.2.0-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libz/libzstd/libzstd1_1.4.8+dfsg-2.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/lcms2/liblcms2-2_2.12~rc1-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/linux/linux-libc-dev_6.0.3-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/lz4/liblz4-1_1.9.3-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/lzo2/liblzo2-2_2.10-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/md4c/libmd4c0_0.4.7-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libegl1-mesa_20.3.5-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libegl1-mesa-dev_20.3.5-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgbm1_20.3.5-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgbm-dev_20.3.5-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgl1-mesa-dev_20.3.5-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgl1-mesa-glx_20.3.5-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libglapi-mesa_20.3.5-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libwayland-egl1-mesa_20.3.5-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/mesa-common-dev_20.3.5-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/minizip/libminizip1_1.1-8+b1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mtdev/libmtdev1_1.1.6-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libncurses6_6.2+20201114-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libncurses-dev_6.2+20201114-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libncursesw6_6.2+20201114-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libtinfo6_6.2+20201114-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nettle/libhogweed6_3.7.3-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nettle/libnettle8_3.7.3-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nghttp2/libnghttp2-14_1.43.0-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nspr/libnspr4_4.29-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nspr/libnspr4-dev_4.29-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nss/libnss3_3.61-1+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nss/libnss3-dev_3.61-1+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/openldap/libldap-2.4-2_2.4.59+dfsg-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/openssl/libssl1.1_1.1.1n-0+deb11u3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/openssl/libssl-dev_1.1.1n-0+deb11u3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/opus/libopus0_1.3.1-0.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/opus/libopus-dev_1.3.1-0.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/p11-kit/libp11-kit0_0.23.22-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pam/libpam0g_1.4.0-9+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pam/libpam0g-dev_1.4.0-9+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpango-1.0-0_1.46.2-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpango1.0-dev_1.46.2-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.46.2-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.46.2-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.46.2-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pciutils/libpci3_3.7.0-5_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pciutils/libpci-dev_3.7.0-5_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-16-0_10.36-2+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-32-0_10.36-2+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-8-0_10.36-2+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-dev_10.36-2+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-posix2_10.36-2+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre16-3_8.39-13_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre32-3_8.39-13_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre3_8.39-13_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre3-dev_8.39-13_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-13_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pipewire/libpipewire-0.3-0_0.3.58-2~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pipewire/libpipewire-0.3-dev_0.3.58-2~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pipewire/libspa-0.2-dev_0.3.58-2~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pixman/libpixman-1-0_0.40.0-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pixman/libpixman-1-dev_0.40.0-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pulseaudio/libpulse0_14.2-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pulseaudio/libpulse-dev_14.2-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_14.2-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5concurrent5_5.15.2+dfsg-9_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5core5a_5.15.2+dfsg-9_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5dbus5_5.15.2+dfsg-9_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5gui5_5.15.2+dfsg-9_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5network5_5.15.2+dfsg-9_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5printsupport5_5.15.2+dfsg-9_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5sql5_5.15.2+dfsg-9_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5test5_5.15.2+dfsg-9_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5widgets5_5.15.2+dfsg-9_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5xml5_5.15.2+dfsg-9_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/qtbase5-dev_5.15.2+dfsg-9_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/qtbase5-dev-tools_5.15.2+dfsg-9_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/r/re2/libre2-9_20210201+dfsg-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/r/re2/libre2-dev_20210201+dfsg-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2+b2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/shared-mime-info/shared-mime-info_2.0-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/snappy/libsnappy1v5_1.1.8-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/snappy/libsnappy-dev_1.1.8-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/speech-dispatcher/libspeechd2_0.11.4-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.11.4-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/sqlite3/libsqlite3-0_3.34.1-3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libsystemd0_251.3-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libsystemd-dev_251.3-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libudev1_251.3-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libudev-dev_251.3-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-31_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tiff/libtiff5_4.2.0-1+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tiff/libtiff-dev_4.2.0-1+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tiff/libtiffxx5_4.2.0-1+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/unbound/libunbound8_1.13.1-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libblkid1_2.36.1-8+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libblkid-dev_2.36.1-8+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libmount1_2.36.1-8+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libmount-dev_2.36.1-8+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libuuid1_2.36.1-8+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/uuid-dev_2.36.1-8+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/v/valgrind/valgrind_3.16.1-1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/v/vulkan-loader/libvulkan1_1.3.224.0-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/v/vulkan-loader/libvulkan-dev_1.3.224.0-1~bpo11+1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-bin_1.18.0-2~exp1.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-client0_1.18.0-2~exp1.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-cursor0_1.18.0-2~exp1.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-dev_1.18.0-2~exp1.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-egl1_1.18.0-2~exp1.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-egl-backend-dev_1.18.0-2~exp1.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-server0_1.18.0-2~exp1.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland-protocols/wayland-protocols_1.20-1_all.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-image/libxcb-image0_0.4.0-1+b3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-image/libxcb-image0-dev_0.4.0-1+b3_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-keysyms/libxcb-keysyms1_0.4.0-1+b2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util/libxcb-util1_0.4.0-1+b1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util/libxcb-util-dev_0.4.0-1+b1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0_0.3.9-1+b1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0-dev_0.3.9-1+b1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-wm/libxcb-icccm4_0.4.1-1.1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xft/libxft2_2.3.2-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xft/libxft-dev_2.3.2-2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xorgproto/x11proto-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xz-utils/liblzma5_5.2.5-2.1~deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2+deb11u2_amd64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-2+deb11u2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/alsa-lib/libasound2_1.2.4-1.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/alsa-lib/libasound2-dev_1.2.4-1.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/atk1.0/libatk1.0-0_2.38.0-1~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/atk1.0/libatk1.0-dev_2.38.0-1~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.38.0-4~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.38.0-4~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.44.1-1~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.44.1-1~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/attr/libattr1_2.4.48-6_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/audit/libaudit1_3.0-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/avahi/libavahi-client3_0.8-5+deb11u2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/avahi/libavahi-common3_0.8-5+deb11u2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/bluez/libbluetooth3_5.55-3.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/bluez/libbluetooth-dev_5.55-3.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/brotli/libbrotli1_1.0.9-2+b2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/brotli/libbrotli-dev_1.0.9-2+b2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo2_1.16.0-5_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo2-dev_1.16.0-5_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-5_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-5_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/colord/libcolord2_1.4.5-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcups2_2.3.3op2-3+deb11u2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcups2-dev_2.3.3op2-3+deb11u2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcupsimage2_2.3.3op2-3+deb11u2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcupsimage2-dev_2.3.3op2-3+deb11u2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/curl/libcurl3-gnutls_7.88.1-7~bpo11+2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/curl/libcurl4-gnutls-dev_7.88.1-7~bpo11+2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.27+dfsg-2.1+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.8_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-6_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/dbus/libdbus-1-3_1.12.24-0+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/dbus/libdbus-1-dev_1.12.24-0+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/double-conversion/libdouble-conversion3_3.1.5-6.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.46.6-1~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/e2fsprogs/libcom-err2_1.46.6-1~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/elfutils/libelf1_0.187-1~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/elfutils/libelf-dev_0.187-1~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/expat/libexpat1_2.2.10-2+deb11u5_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/expat/libexpat1-dev_2.2.10-2+deb11u5_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/flac/libflac8_1.3.3-2+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/flac/libflac-dev_1.3.3-2+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-4.2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fontconfig/libfontconfig-dev_2.13.1-4.2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/freetype/libfreetype6_2.10.4+dfsg-1+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/freetype/libfreetype-dev_2.10.4+dfsg-1+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fribidi/libfribidi0_1.0.8-2+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fribidi/libfribidi-dev_1.0.8-2+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libasan6_10.2.1-6_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libatomic1_10.2.1-6_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libgcc-10-dev_10.2.1-6_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libgcc-s1_10.2.1-6_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libgomp1_10.2.1-6_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libitm1_10.2.1-6_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/liblsan0_10.2.1-6_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libquadmath0_10.2.1-6_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libstdc++-10-dev_10.2.1-6_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libstdc++6_10.2.1-6_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libtsan0_10.2.1-6_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libubsan1_10.2.1-6_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-0_2.42.2+dfsg-1+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-dev_2.42.2+dfsg-1+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glib2.0/libglib2.0-0_2.66.8-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glib2.0/libglib2.0-dev_2.66.8-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glibc/libc6_2.31-13+deb11u5_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glibc/libc6-dev_2.31-13+deb11u5_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls28-dev_3.7.1-5+deb11u3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls30_3.7.1-5+deb11u3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls-dane0_3.7.1-5+deb11u3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls-openssl27_3.7.1-5+deb11u3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutlsxx28_3.7.1-5+deb11u3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.4+dfsg1-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.4+dfsg1-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphite2/libgraphite2-3_1.3.14-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphite2/libgraphite2-dev_1.3.14-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.33-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.24-4+deb11u3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.24-4+deb11u3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk4/libgtk-4-1_4.8.3+ds-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk4/libgtk-4-dev_4.8.3+ds-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz0b_2.7.4-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.7.4-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.7.4-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.7.4-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/i/icu/libicu67_67.1-7_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/j/jbigkit/libjbig-dev_2.1-3.1+b2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.6.2-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/keyutils/libkeyutils1_1.6.1-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/krb5-multidev_1.18.3-6+deb11u3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6+deb11u3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libgssrpc4_1.18.3-6+deb11u3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libk5crypto3_1.18.3-6+deb11u3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkadm5clnt-mit12_1.18.3-6+deb11u3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkadm5srv-mit12_1.18.3-6+deb11u3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkdb5-10_1.18.3-6+deb11u3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkrb5-3_1.18.3-6+deb11u3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkrb5-dev_1.18.3-6+deb11u3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkrb5support0_1.18.3-6+deb11u3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libb/libb2/libb2-1_0.98.1-1.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libb/libbsd/libbsd0_0.11.3-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcap2/libcap2_2.44-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcap2/libcap-dev_2.44-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2.2+b1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcloudproviders/libcloudproviders0_0.3.0-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdatrie/libdatrie1_0.2.13-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdatrie/libdatrie-dev_0.2.13-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr492+repack1-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr492+repack1-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr492+repack1-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr492+repack1-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdeflate/libdeflate0_1.10-2~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdeflate/libdeflate-dev_1.10-2~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm2_2.4.104-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.104-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-dev_2.4.104-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-intel1_2.4.104-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.104-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.104-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libepoxy/libepoxy0_1.5.8-1~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.8-1~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libevdev/libevdev2_1.11.0+dfsg-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libevdev/libevdev-dev_1.11.0+dfsg-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libevent/libevent-2.1-7_2.1.12-stable-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libf/libffi/libffi7_3.3-6_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libf/libffi/libffi-dev_3.3-6_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.7-6_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.7-6_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libegl1_1.3.2-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libegl-dev_1.3.2-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgl1_1.3.2-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgl-dev_1.3.2-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgles1_1.3.2-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgles2_1.3.2-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgles-dev_1.3.2-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglvnd0_1.3.2-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglvnd-dev_1.3.2-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglx0_1.3.2-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglx-dev_1.3.2-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libopengl0_1.3.2-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgpg-error/libgpg-error0_1.38-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.38-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgudev/libgudev-1.0-0_234-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libice/libice6_1.0.10-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libidn2/libidn2-0_2.3.0-5_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libidn/libidn11_1.33-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libinput/libinput10_1.16.4-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libinput/libinput-dev_1.16.4-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.0.6-4_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_2.0.6-4_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjsoncpp/libjsoncpp24_1.9.4-4_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.9.4-4_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libm/libmd/libmd0_1.0.3-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libn/libnsl/libnsl2_1.3.0-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b10_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libo/libogg/libogg0_1.3.4-0.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libo/libogg/libogg-dev_1.3.4-0.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpciaccess/libpciaccess0_0.16-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libproxy/libproxy1v5_0.4.17-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpsl/libpsl5_0.21.0-1.2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libselinux/libselinux1_3.1-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libselinux/libselinux1-dev_3.1-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsepol/libsepol1_3.1-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsepol/libsepol1-dev_3.1-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsm/libsm6_1.2.3-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsndfile/libsndfile1_1.0.31-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.72.0-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.72.0-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libssh2/libssh2-1_1.9.0-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libthai/libthai0_0.1.28-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libthai/libthai-dev_0.1.28-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libtirpc/libtirpc3_1.3.1-1+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libtool/libltdl7_2.4.6-15_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libu/libunistring/libunistring2_0.9.10-4_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libu/libutempter/libutempter0_1.2.1-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libu/libutempter/libutempter-dev_1.2.1-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva2_2.17.0-1~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-dev_2.17.0-1~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-drm2_2.17.0-1~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-glx2_2.17.0-1~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-wayland2_2.17.0-1~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-x11-2_2.17.0-1~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libvorbis/libvorbis0a_1.3.7-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.7-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwacom/libwacom2_1.8-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebp6_0.6.1-2.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebp7_1.2.4-0.2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-6_1.7.2-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-dev_1.7.2-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-xcb1_1.7.2-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-xcb-dev_1.7.2-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxau/libxau6_1.0.9-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxau/libxau-dev_1.0.9-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb1_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb1-dev_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri2-0_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri3-0_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri3-dev_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-glx0_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-present0_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-present-dev_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-randr0_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-randr0-dev_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-render0_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-render0-dev_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shape0_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shape0-dev_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shm0_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-sync1_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-sync-dev_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xfixes0_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xfixes0-dev_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xinerama0_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xinput0_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xkb1_1.14-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.5-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.5-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcrypt/libcrypt1_4.4.18-4_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcrypt/libcrypt-dev_4.4.18-4_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxext/libxext6_1.3.3-1.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxext/libxext-dev_1.3.3-1.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxi/libxi6_1.7.10-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxi/libxi-dev_1.7.10-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxkbcommon/libxkbcommon0_1.0.3-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_1.0.3-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxkbcommon/libxkbcommon-x11-0_1.0.3-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxml2/libxml2_2.9.10+dfsg-6.7+deb11u4_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxml2/libxml2-dev_2.9.10+dfsg-6.7+deb11u4_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxshmfence/libxshmfence-dev_1.3-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxslt/libxslt1.1_1.1.34-4+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxslt/libxslt1-dev_1.1.34-4+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxss/libxss1_1.2.3-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxt/libxt6_1.2.0-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxt/libxt-dev_1.2.0-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libz/libzstd/libzstd1_1.4.8+dfsg-2.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lcms2/liblcms2-2_2.12~rc1-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lerc/liblerc4_4.0.0+ds-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/linux/linux-libc-dev_6.1.20-2~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lz4/liblz4-1_1.9.3-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lzo2/liblzo2-2_2.10-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/md4c/libmd4c0_0.4.7-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libegl1-mesa_20.3.5-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libegl1-mesa-dev_20.3.5-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgbm1_20.3.5-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgbm-dev_20.3.5-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgl1-mesa-dev_20.3.5-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgl1-mesa-glx_20.3.5-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libglapi-mesa_20.3.5-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libwayland-egl1-mesa_20.3.5-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/mesa-common-dev_20.3.5-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/minizip/libminizip1_1.1-8+b1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mtdev/libmtdev1_1.1.6-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libncurses6_6.2+20201114-2+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libncurses-dev_6.2+20201114-2+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libncursesw6_6.2+20201114-2+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libtinfo6_6.2+20201114-2+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nettle/libhogweed6_3.7.3-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nettle/libnettle8_3.7.3-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nghttp2/libnghttp2-14_1.43.0-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nspr/libnspr4_4.29-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nspr/libnspr4-dev_4.29-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nss/libnss3_3.61-1+deb11u3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nss/libnss3-dev_3.61-1+deb11u3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/openldap/libldap-2.4-2_2.4.59+dfsg-1~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/openssl/libssl1.1_1.1.1n-0+deb11u4_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/openssl/libssl-dev_1.1.1n-0+deb11u4_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/opus/libopus0_1.3.1-0.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/opus/libopus-dev_1.3.1-0.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/p11-kit/libp11-kit0_0.23.22-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pam/libpam0g_1.4.0-9+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pam/libpam0g-dev_1.4.0-9+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpango-1.0-0_1.46.2-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpango1.0-dev_1.46.2-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.46.2-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.46.2-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.46.2-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pciutils/libpci3_3.7.0-5_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pciutils/libpci-dev_3.7.0-5_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-16-0_10.36-2+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-32-0_10.36-2+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-8-0_10.36-2+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-dev_10.36-2+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-posix2_10.36-2+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre16-3_8.39-13_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre32-3_8.39-13_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre3_8.39-13_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre3-dev_8.39-13_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-13_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pipewire/libpipewire-0.3-0_0.3.65-2~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pipewire/libpipewire-0.3-dev_0.3.65-2~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pipewire/libspa-0.2-dev_0.3.65-2~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pixman/libpixman-1-0_0.40.0-1.1~deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pixman/libpixman-1-dev_0.40.0-1.1~deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pulseaudio/libpulse0_14.2-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pulseaudio/libpulse-dev_14.2-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_14.2-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6concurrent6_6.4.2+dfsg-10~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6core6_6.4.2+dfsg-10~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6dbus6_6.4.2+dfsg-10~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6gui6_6.4.2+dfsg-10~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6network6_6.4.2+dfsg-10~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6opengl6_6.4.2+dfsg-10~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6openglwidgets6_6.4.2+dfsg-10~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6printsupport6_6.4.2+dfsg-10~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6sql6_6.4.2+dfsg-10~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6test6_6.4.2+dfsg-10~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6widgets6_6.4.2+dfsg-10~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6xml6_6.4.2+dfsg-10~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/qt6-base-dev_6.4.2+dfsg-10~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/qt6-base-dev-tools_6.4.2+dfsg-10~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5concurrent5_5.15.2+dfsg-9_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5core5a_5.15.2+dfsg-9_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5dbus5_5.15.2+dfsg-9_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5gui5_5.15.2+dfsg-9_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5network5_5.15.2+dfsg-9_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5printsupport5_5.15.2+dfsg-9_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5sql5_5.15.2+dfsg-9_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5test5_5.15.2+dfsg-9_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5widgets5_5.15.2+dfsg-9_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5xml5_5.15.2+dfsg-9_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/qtbase5-dev_5.15.2+dfsg-9_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/qtbase5-dev-tools_5.15.2+dfsg-9_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/r/re2/libre2-9_20210201+dfsg-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/r/re2/libre2-dev_20210201+dfsg-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2+b2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/shared-mime-info/shared-mime-info_2.0-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/snappy/libsnappy1v5_1.1.8-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/snappy/libsnappy-dev_1.1.8-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/speech-dispatcher/libspeechd2_0.11.4-2~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.11.4-2~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/sqlite3/libsqlite3-0_3.34.1-3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libsystemd0_252.5-2~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libsystemd-dev_252.5-2~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libudev1_252.5-2~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libudev-dev_252.5-2~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-31_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiff5_4.2.0-1+deb11u4_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiff6_4.5.0-6_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiff-dev_4.2.0-1+deb11u4_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiffxx5_4.2.0-1+deb11u4_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tslib/libts0_1.22-1+b1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/unbound/libunbound8_1.17.1-2~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libblkid1_2.36.1-8+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libblkid-dev_2.36.1-8+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libmount1_2.36.1-8+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libmount-dev_2.36.1-8+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libuuid1_2.36.1-8+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/uuid-dev_2.36.1-8+deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/v/valgrind/valgrind_3.16.1-1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/v/vulkan-loader/libvulkan1_1.3.224.0-1~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/v/vulkan-loader/libvulkan-dev_1.3.224.0-1~bpo11+1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-bin_1.18.0-2~exp1.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-client0_1.18.0-2~exp1.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-cursor0_1.18.0-2~exp1.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-dev_1.18.0-2~exp1.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-egl1_1.18.0-2~exp1.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-egl-backend-dev_1.18.0-2~exp1.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-server0_1.18.0-2~exp1.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland-protocols/wayland-protocols_1.20-1_all.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-image/libxcb-image0_0.4.0-1+b3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-image/libxcb-image0-dev_0.4.0-1+b3_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-keysyms/libxcb-keysyms1_0.4.0-1+b2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util/libxcb-util1_0.4.0-1+b1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util/libxcb-util-dev_0.4.0-1+b1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0_0.3.9-1+b1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0-dev_0.3.9-1+b1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-wm/libxcb-icccm4_0.4.1-1.1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xft/libxft2_2.3.2-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xft/libxft-dev_2.3.2-2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xorgproto/x11proto-dev_2020.1-1_all.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xz-utils/liblzma5_5.2.5-2.1~deb11u1_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2+deb11u2_amd64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-2+deb11u2_amd64.deb diff --git a/build/linux/sysroot_scripts/generated_package_lists/bullseye.arm b/build/linux/sysroot_scripts/generated_package_lists/bullseye.arm deleted file mode 100644 index 20517dc..0000000 --- a/build/linux/sysroot_scripts/generated_package_lists/bullseye.arm +++ /dev/null @@ -1,391 +0,0 @@ -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/alsa-lib/libasound2_1.2.4-1.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/alsa-lib/libasound2-dev_1.2.4-1.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/atk1.0/libatk1.0-0_2.38.0-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/atk1.0/libatk1.0-dev_2.38.0-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.38.0-4~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.38.0-4~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.44.1-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.44.1-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/attr/libattr1_2.4.48-6_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/audit/libaudit1_3.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/avahi/libavahi-client3_0.8-5+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/avahi/libavahi-common3_0.8-5+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/bluez/libbluetooth3_5.55-3.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/bluez/libbluetooth-dev_5.55-3.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/brotli/libbrotli1_1.0.9-2+b2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/brotli/libbrotli-dev_1.0.9-2+b2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo2_1.16.0-5_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo2-dev_1.16.0-5_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-5_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-5_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/colord/libcolord2_1.4.5-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcups2_2.3.3op2-3+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcups2-dev_2.3.3op2-3+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcupsimage2_2.3.3op2-3+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcupsimage2-dev_2.3.3op2-3+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/curl/libcurl3-gnutls_7.85.0-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/curl/libcurl4-gnutls-dev_7.85.0-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.27+dfsg-2.1+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.8_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-6_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/dbus/libdbus-1-3_1.12.20-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/dbus/libdbus-1-dev_1.12.20-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/double-conversion/libdouble-conversion3_3.1.5-6.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.46.5-2~bpo11+2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/e2fsprogs/libcom-err2_1.46.5-2~bpo11+2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/elfutils/libelf1_0.187-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/elfutils/libelf-dev_0.187-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/expat/libexpat1_2.2.10-2+deb11u3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/expat/libexpat1-dev_2.2.10-2+deb11u3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/flac/libflac8_1.3.3-2+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/flac/libflac-dev_1.3.3-2+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-4.2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fontconfig/libfontconfig-dev_2.13.1-4.2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/freetype/libfreetype6_2.10.4+dfsg-1+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/freetype/libfreetype-dev_2.10.4+dfsg-1+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fribidi/libfribidi0_1.0.8-2+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fribidi/libfribidi-dev_1.0.8-2+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libasan6_10.2.1-6_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libatomic1_10.2.1-6_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libgcc-10-dev_10.2.1-6_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libgcc-s1_10.2.1-6_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libgomp1_10.2.1-6_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libstdc++-10-dev_10.2.1-6_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libstdc++6_10.2.1-6_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libubsan1_10.2.1-6_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-0_2.42.2+dfsg-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-dev_2.42.2+dfsg-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glib2.0/libglib2.0-0_2.66.8-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glib2.0/libglib2.0-dev_2.66.8-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glibc/libc6_2.31-13+deb11u5_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glibc/libc6-dev_2.31-13+deb11u5_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls28-dev_3.7.1-5+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls30_3.7.1-5+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls-dane0_3.7.1-5+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls-openssl27_3.7.1-5+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutlsxx28_3.7.1-5+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.4+dfsg1-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.4+dfsg1-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphite2/libgraphite2-3_1.3.14-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphite2/libgraphite2-dev_1.3.14-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.33-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.24-4+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.24-4+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk4/libgtk-4-1_4.8.1+ds-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk4/libgtk-4-dev_4.8.1+ds-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz0b_2.7.4-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.7.4-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.7.4-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.7.4-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/i/icu/libicu67_67.1-7_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/j/jbigkit/libjbig-dev_2.1-3.1+b2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.6.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/keyutils/libkeyutils1_1.6.1-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/krb5-multidev_1.18.3-6+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libgssrpc4_1.18.3-6+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libk5crypto3_1.18.3-6+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkadm5clnt-mit12_1.18.3-6+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkadm5srv-mit12_1.18.3-6+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkdb5-10_1.18.3-6+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkrb5-3_1.18.3-6+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkrb5-dev_1.18.3-6+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkrb5support0_1.18.3-6+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libb/libbsd/libbsd0_0.11.3-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcap2/libcap2_2.44-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcap2/libcap-dev_2.44-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2.2+b1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcloudproviders/libcloudproviders0_0.3.0-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdatrie/libdatrie1_0.2.13-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdatrie/libdatrie-dev_0.2.13-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr492+repack1-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr492+repack1-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr492+repack1-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr492+repack1-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdeflate/libdeflate0_1.10-2~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdeflate/libdeflate-dev_1.10-2~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm2_2.4.104-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.104-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-dev_2.4.104-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-etnaviv1_2.4.104-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-exynos1_2.4.104-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-freedreno1_2.4.104-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.104-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-omap1_2.4.104-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.104-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-tegra0_2.4.104-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libepoxy/libepoxy0_1.5.8-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.8-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libevdev/libevdev2_1.11.0+dfsg-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libevdev/libevdev-dev_1.11.0+dfsg-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libevent/libevent-2.1-7_2.1.12-stable-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libf/libffi/libffi7_3.3-6_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libf/libffi/libffi-dev_3.3-6_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.7-6_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.7-6_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libegl1_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libegl-dev_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgl1_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgl-dev_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgles1_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgles2_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgles-dev_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglvnd0_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglvnd-dev_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglx0_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglx-dev_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libopengl0_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgpg-error/libgpg-error0_1.38-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.38-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgudev/libgudev-1.0-0_234-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libice/libice6_1.0.10-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libidn2/libidn2-0_2.3.0-5_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libidn/libidn11_1.33-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libinput/libinput10_1.16.4-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libinput/libinput-dev_1.16.4-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.0.6-4_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_2.0.6-4_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjsoncpp/libjsoncpp24_1.9.4-4_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.9.4-4_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libm/libmd/libmd0_1.0.3-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libn/libnsl/libnsl2_1.3.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b10_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libo/libogg/libogg0_1.3.4-0.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libo/libogg/libogg-dev_1.3.4-0.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpciaccess/libpciaccess0_0.16-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpsl/libpsl5_0.21.0-1.2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libselinux/libselinux1_3.1-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libselinux/libselinux1-dev_3.1-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsepol/libsepol1_3.1-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsepol/libsepol1-dev_3.1-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsm/libsm6_1.2.3-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsndfile/libsndfile1_1.0.31-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.72.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.72.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libssh2/libssh2-1_1.9.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libthai/libthai0_0.1.28-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libthai/libthai-dev_0.1.28-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libtirpc/libtirpc3_1.3.1-1+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libtool/libltdl7_2.4.6-15_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libu/libunistring/libunistring2_0.9.10-4_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libu/libutempter/libutempter0_1.2.1-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libu/libutempter/libutempter-dev_1.2.1-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva2_2.14.0-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-dev_2.14.0-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-drm2_2.14.0-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-glx2_2.14.0-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-wayland2_2.14.0-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-x11-2_2.14.0-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libvorbis/libvorbis0a_1.3.7-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.7-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwacom/libwacom2_1.8-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebp6_0.6.1-2.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-6_1.7.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-dev_1.7.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-xcb1_1.7.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-xcb-dev_1.7.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxau/libxau6_1.0.9-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxau/libxau-dev_1.0.9-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb1_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb1-dev_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri2-0_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri3-0_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri3-dev_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-glx0_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-present0_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-present-dev_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-randr0_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-randr0-dev_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-render0_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-render0-dev_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shape0_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shape0-dev_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shm0_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-sync1_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-sync-dev_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xfixes0_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xfixes0-dev_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xinerama0_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xinput0_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xkb1_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.5-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.5-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcrypt/libcrypt1_4.4.18-4_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcrypt/libcrypt-dev_4.4.18-4_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxext/libxext6_1.3.3-1.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxext/libxext-dev_1.3.3-1.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxi/libxi6_1.7.10-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxi/libxi-dev_1.7.10-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxkbcommon/libxkbcommon0_1.0.3-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_1.0.3-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxkbcommon/libxkbcommon-x11-0_1.0.3-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxml2/libxml2_2.9.10+dfsg-6.7+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxml2/libxml2-dev_2.9.10+dfsg-6.7+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxshmfence/libxshmfence-dev_1.3-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxslt/libxslt1.1_1.1.34-4+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxslt/libxslt1-dev_1.1.34-4+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxss/libxss1_1.2.3-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxt/libxt6_1.2.0-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxt/libxt-dev_1.2.0-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libz/libzstd/libzstd1_1.4.8+dfsg-2.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/lcms2/liblcms2-2_2.12~rc1-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/linux/linux-libc-dev_6.0.3-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/lz4/liblz4-1_1.9.3-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/lzo2/liblzo2-2_2.10-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/md4c/libmd4c0_0.4.7-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libegl1-mesa_20.3.5-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libegl1-mesa-dev_20.3.5-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgbm1_20.3.5-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgbm-dev_20.3.5-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgl1-mesa-dev_20.3.5-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgl1-mesa-glx_20.3.5-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libglapi-mesa_20.3.5-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libwayland-egl1-mesa_20.3.5-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/mesa-common-dev_20.3.5-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/minizip/libminizip1_1.1-8+b1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mtdev/libmtdev1_1.1.6-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libncurses6_6.2+20201114-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libncurses-dev_6.2+20201114-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libncursesw6_6.2+20201114-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libtinfo6_6.2+20201114-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nettle/libhogweed6_3.7.3-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nettle/libnettle8_3.7.3-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nghttp2/libnghttp2-14_1.43.0-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nspr/libnspr4_4.29-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nspr/libnspr4-dev_4.29-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nss/libnss3_3.61-1+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nss/libnss3-dev_3.61-1+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/openldap/libldap-2.4-2_2.4.59+dfsg-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/openssl/libssl1.1_1.1.1n-0+deb11u3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/openssl/libssl-dev_1.1.1n-0+deb11u3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/opus/libopus0_1.3.1-0.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/opus/libopus-dev_1.3.1-0.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/p11-kit/libp11-kit0_0.23.22-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pam/libpam0g_1.4.0-9+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pam/libpam0g-dev_1.4.0-9+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpango-1.0-0_1.46.2-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpango1.0-dev_1.46.2-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.46.2-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.46.2-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.46.2-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pciutils/libpci3_3.7.0-5_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pciutils/libpci-dev_3.7.0-5_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-16-0_10.36-2+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-32-0_10.36-2+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-8-0_10.36-2+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-dev_10.36-2+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-posix2_10.36-2+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre16-3_8.39-13_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre32-3_8.39-13_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre3_8.39-13_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre3-dev_8.39-13_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-13_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pipewire/libpipewire-0.3-0_0.3.58-2~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pipewire/libpipewire-0.3-dev_0.3.58-2~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pipewire/libspa-0.2-dev_0.3.58-2~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pixman/libpixman-1-0_0.40.0-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pixman/libpixman-1-dev_0.40.0-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pulseaudio/libpulse0_14.2-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pulseaudio/libpulse-dev_14.2-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_14.2-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5concurrent5_5.15.2+dfsg-9_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5core5a_5.15.2+dfsg-9_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5dbus5_5.15.2+dfsg-9_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5gui5_5.15.2+dfsg-9_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5network5_5.15.2+dfsg-9_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5printsupport5_5.15.2+dfsg-9_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5sql5_5.15.2+dfsg-9_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5test5_5.15.2+dfsg-9_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5widgets5_5.15.2+dfsg-9_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5xml5_5.15.2+dfsg-9_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/qtbase5-dev_5.15.2+dfsg-9_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/qtbase5-dev-tools_5.15.2+dfsg-9_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/r/re2/libre2-9_20210201+dfsg-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/r/re2/libre2-dev_20210201+dfsg-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2+b2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/shared-mime-info/shared-mime-info_2.0-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/snappy/libsnappy1v5_1.1.8-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/snappy/libsnappy-dev_1.1.8-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/speech-dispatcher/libspeechd2_0.11.4-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.11.4-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/sqlite3/libsqlite3-0_3.34.1-3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libsystemd0_251.3-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libsystemd-dev_251.3-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libudev1_251.3-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libudev-dev_251.3-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-31_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tiff/libtiff5_4.2.0-1+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tiff/libtiff-dev_4.2.0-1+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tiff/libtiffxx5_4.2.0-1+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/unbound/libunbound8_1.13.1-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libblkid1_2.36.1-8+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libblkid-dev_2.36.1-8+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libmount1_2.36.1-8+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libmount-dev_2.36.1-8+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libuuid1_2.36.1-8+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/uuid-dev_2.36.1-8+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/v/valgrind/valgrind_3.16.1-1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/v/vulkan-loader/libvulkan1_1.3.224.0-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/v/vulkan-loader/libvulkan-dev_1.3.224.0-1~bpo11+1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-bin_1.18.0-2~exp1.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-client0_1.18.0-2~exp1.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-cursor0_1.18.0-2~exp1.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-dev_1.18.0-2~exp1.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-egl1_1.18.0-2~exp1.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-egl-backend-dev_1.18.0-2~exp1.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-server0_1.18.0-2~exp1.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland-protocols/wayland-protocols_1.20-1_all.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-image/libxcb-image0_0.4.0-1+b3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-image/libxcb-image0-dev_0.4.0-1+b3_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-keysyms/libxcb-keysyms1_0.4.0-1+b2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util/libxcb-util1_0.4.0-1+b1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util/libxcb-util-dev_0.4.0-1+b1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0_0.3.9-1+b1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0-dev_0.3.9-1+b1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-wm/libxcb-icccm4_0.4.1-1.1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xft/libxft2_2.3.2-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xft/libxft-dev_2.3.2-2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xorgproto/x11proto-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xz-utils/liblzma5_5.2.5-2.1~deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2+deb11u2_armhf.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-2+deb11u2_armhf.deb diff --git a/build/linux/sysroot_scripts/generated_package_lists/bullseye.arm64 b/build/linux/sysroot_scripts/generated_package_lists/bullseye.arm64 index b191ace..e58880f 100644 --- a/build/linux/sysroot_scripts/generated_package_lists/bullseye.arm64 +++ b/build/linux/sysroot_scripts/generated_package_lists/bullseye.arm64 @@ -1,394 +1,412 @@ -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/alsa-lib/libasound2_1.2.4-1.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/alsa-lib/libasound2-dev_1.2.4-1.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/atk1.0/libatk1.0-0_2.38.0-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/atk1.0/libatk1.0-dev_2.38.0-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.38.0-4~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.38.0-4~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.44.1-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.44.1-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/attr/libattr1_2.4.48-6_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/audit/libaudit1_3.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/avahi/libavahi-client3_0.8-5+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/avahi/libavahi-common3_0.8-5+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/bluez/libbluetooth3_5.55-3.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/bluez/libbluetooth-dev_5.55-3.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/brotli/libbrotli1_1.0.9-2+b2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/brotli/libbrotli-dev_1.0.9-2+b2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo2_1.16.0-5_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo2-dev_1.16.0-5_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-5_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-5_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/colord/libcolord2_1.4.5-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcups2_2.3.3op2-3+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcups2-dev_2.3.3op2-3+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcupsimage2_2.3.3op2-3+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcupsimage2-dev_2.3.3op2-3+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/curl/libcurl3-gnutls_7.85.0-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/curl/libcurl4-gnutls-dev_7.85.0-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.27+dfsg-2.1+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.8_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-6_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/dbus/libdbus-1-3_1.12.20-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/dbus/libdbus-1-dev_1.12.20-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/double-conversion/libdouble-conversion3_3.1.5-6.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.46.5-2~bpo11+2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/e2fsprogs/libcom-err2_1.46.5-2~bpo11+2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/elfutils/libelf1_0.187-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/elfutils/libelf-dev_0.187-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/expat/libexpat1_2.2.10-2+deb11u3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/expat/libexpat1-dev_2.2.10-2+deb11u3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/flac/libflac8_1.3.3-2+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/flac/libflac-dev_1.3.3-2+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-4.2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fontconfig/libfontconfig-dev_2.13.1-4.2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/freetype/libfreetype6_2.10.4+dfsg-1+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/freetype/libfreetype-dev_2.10.4+dfsg-1+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fribidi/libfribidi0_1.0.8-2+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fribidi/libfribidi-dev_1.0.8-2+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libasan6_10.2.1-6_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libatomic1_10.2.1-6_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libgcc-10-dev_10.2.1-6_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libgcc-s1_10.2.1-6_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libgomp1_10.2.1-6_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libitm1_10.2.1-6_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/liblsan0_10.2.1-6_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libstdc++-10-dev_10.2.1-6_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libstdc++6_10.2.1-6_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libtsan0_10.2.1-6_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libubsan1_10.2.1-6_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-0_2.42.2+dfsg-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-dev_2.42.2+dfsg-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glib2.0/libglib2.0-0_2.66.8-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glib2.0/libglib2.0-dev_2.66.8-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glibc/libc6_2.31-13+deb11u5_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glibc/libc6-dev_2.31-13+deb11u5_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls28-dev_3.7.1-5+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls30_3.7.1-5+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls-dane0_3.7.1-5+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls-openssl27_3.7.1-5+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutlsxx28_3.7.1-5+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.4+dfsg1-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.4+dfsg1-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphite2/libgraphite2-3_1.3.14-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphite2/libgraphite2-dev_1.3.14-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.33-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.24-4+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.24-4+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk4/libgtk-4-1_4.8.1+ds-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk4/libgtk-4-dev_4.8.1+ds-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz0b_2.7.4-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.7.4-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.7.4-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.7.4-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/i/icu/libicu67_67.1-7_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/j/jbigkit/libjbig-dev_2.1-3.1+b2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.6.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/keyutils/libkeyutils1_1.6.1-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/krb5-multidev_1.18.3-6+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libgssrpc4_1.18.3-6+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libk5crypto3_1.18.3-6+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkadm5clnt-mit12_1.18.3-6+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkadm5srv-mit12_1.18.3-6+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkdb5-10_1.18.3-6+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkrb5-3_1.18.3-6+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkrb5-dev_1.18.3-6+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkrb5support0_1.18.3-6+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libb/libbsd/libbsd0_0.11.3-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcap2/libcap2_2.44-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcap2/libcap-dev_2.44-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2.2+b1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcloudproviders/libcloudproviders0_0.3.0-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdatrie/libdatrie1_0.2.13-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdatrie/libdatrie-dev_0.2.13-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr492+repack1-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr492+repack1-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr492+repack1-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr492+repack1-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdeflate/libdeflate0_1.10-2~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdeflate/libdeflate-dev_1.10-2~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm2_2.4.104-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.104-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-dev_2.4.104-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-etnaviv1_2.4.104-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-freedreno1_2.4.104-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.104-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.104-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-tegra0_2.4.104-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libepoxy/libepoxy0_1.5.8-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.8-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libevdev/libevdev2_1.11.0+dfsg-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libevdev/libevdev-dev_1.11.0+dfsg-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libevent/libevent-2.1-7_2.1.12-stable-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libf/libffi/libffi7_3.3-6_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libf/libffi/libffi-dev_3.3-6_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.7-6_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.7-6_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libegl1_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libegl-dev_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgl1_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgl-dev_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgles1_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgles2_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgles-dev_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglvnd0_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglvnd-dev_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglx0_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglx-dev_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libopengl0_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgpg-error/libgpg-error0_1.38-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.38-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgudev/libgudev-1.0-0_234-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libice/libice6_1.0.10-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libidn2/libidn2-0_2.3.0-5_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libidn/libidn11_1.33-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libinput/libinput10_1.16.4-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libinput/libinput-dev_1.16.4-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.0.6-4_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_2.0.6-4_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjsoncpp/libjsoncpp24_1.9.4-4_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.9.4-4_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libm/libmd/libmd0_1.0.3-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libn/libnsl/libnsl2_1.3.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b10_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libo/libogg/libogg0_1.3.4-0.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libo/libogg/libogg-dev_1.3.4-0.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpciaccess/libpciaccess0_0.16-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpsl/libpsl5_0.21.0-1.2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libselinux/libselinux1_3.1-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libselinux/libselinux1-dev_3.1-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsepol/libsepol1_3.1-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsepol/libsepol1-dev_3.1-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsm/libsm6_1.2.3-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsndfile/libsndfile1_1.0.31-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.72.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.72.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libssh2/libssh2-1_1.9.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libthai/libthai0_0.1.28-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libthai/libthai0_0.1.28-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libthai/libthai-dev_0.1.28-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libtirpc/libtirpc3_1.3.1-1+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libtool/libltdl7_2.4.6-15_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libu/libunistring/libunistring2_0.9.10-4_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libu/libutempter/libutempter0_1.2.1-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libu/libutempter/libutempter-dev_1.2.1-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva2_2.14.0-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-dev_2.14.0-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-drm2_2.14.0-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-glx2_2.14.0-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-wayland2_2.14.0-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-x11-2_2.14.0-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libvorbis/libvorbis0a_1.3.7-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.7-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwacom/libwacom2_1.8-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebp6_0.6.1-2.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-6_1.7.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-dev_1.7.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-xcb1_1.7.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-xcb-dev_1.7.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxau/libxau6_1.0.9-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxau/libxau-dev_1.0.9-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb1_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb1-dev_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri2-0_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri3-0_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri3-dev_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-glx0_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-present0_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-present-dev_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-randr0_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-randr0-dev_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-render0_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-render0-dev_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shape0_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shape0-dev_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shm0_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-sync1_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-sync-dev_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xfixes0_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xfixes0-dev_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xinerama0_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xinput0_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xkb1_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.5-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.5-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcrypt/libcrypt1_4.4.18-4_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcrypt/libcrypt-dev_4.4.18-4_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxext/libxext6_1.3.3-1.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxext/libxext-dev_1.3.3-1.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxi/libxi6_1.7.10-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxi/libxi-dev_1.7.10-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxkbcommon/libxkbcommon0_1.0.3-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_1.0.3-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxkbcommon/libxkbcommon-x11-0_1.0.3-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxml2/libxml2_2.9.10+dfsg-6.7+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxml2/libxml2-dev_2.9.10+dfsg-6.7+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxshmfence/libxshmfence-dev_1.3-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxslt/libxslt1.1_1.1.34-4+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxslt/libxslt1-dev_1.1.34-4+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxss/libxss1_1.2.3-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxt/libxt6_1.2.0-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxt/libxt-dev_1.2.0-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libz/libzstd/libzstd1_1.4.8+dfsg-2.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/lcms2/liblcms2-2_2.12~rc1-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/linux/linux-libc-dev_6.0.3-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/lz4/liblz4-1_1.9.3-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/lzo2/liblzo2-2_2.10-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/md4c/libmd4c0_0.4.7-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libegl1-mesa_20.3.5-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libegl1-mesa-dev_20.3.5-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgbm1_20.3.5-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgbm-dev_20.3.5-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgl1-mesa-dev_20.3.5-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgl1-mesa-glx_20.3.5-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libglapi-mesa_20.3.5-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libwayland-egl1-mesa_20.3.5-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/mesa-common-dev_20.3.5-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/minizip/libminizip1_1.1-8+b1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mtdev/libmtdev1_1.1.6-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libncurses6_6.2+20201114-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libncurses-dev_6.2+20201114-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libncursesw6_6.2+20201114-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libtinfo6_6.2+20201114-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nettle/libhogweed6_3.7.3-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nettle/libnettle8_3.7.3-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nghttp2/libnghttp2-14_1.43.0-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nspr/libnspr4_4.29-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nspr/libnspr4-dev_4.29-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nss/libnss3_3.61-1+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nss/libnss3-dev_3.61-1+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/openldap/libldap-2.4-2_2.4.59+dfsg-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/openssl/libssl1.1_1.1.1n-0+deb11u3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/openssl/libssl-dev_1.1.1n-0+deb11u3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/opus/libopus0_1.3.1-0.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/opus/libopus-dev_1.3.1-0.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/p11-kit/libp11-kit0_0.23.22-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pam/libpam0g_1.4.0-9+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pam/libpam0g-dev_1.4.0-9+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpango-1.0-0_1.46.2-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpango1.0-dev_1.46.2-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.46.2-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.46.2-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.46.2-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pciutils/libpci3_3.7.0-5_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pciutils/libpci-dev_3.7.0-5_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-16-0_10.36-2+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-32-0_10.36-2+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-8-0_10.36-2+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-dev_10.36-2+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-posix2_10.36-2+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre16-3_8.39-13_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre32-3_8.39-13_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre3_8.39-13_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre3-dev_8.39-13_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-13_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pipewire/libpipewire-0.3-0_0.3.58-2~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pipewire/libpipewire-0.3-dev_0.3.58-2~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pipewire/libspa-0.2-dev_0.3.58-2~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pixman/libpixman-1-0_0.40.0-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pixman/libpixman-1-dev_0.40.0-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pulseaudio/libpulse0_14.2-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pulseaudio/libpulse-dev_14.2-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_14.2-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5concurrent5_5.15.2+dfsg-9_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5core5a_5.15.2+dfsg-9_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5dbus5_5.15.2+dfsg-9_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5gui5_5.15.2+dfsg-9_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5network5_5.15.2+dfsg-9_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5printsupport5_5.15.2+dfsg-9_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5sql5_5.15.2+dfsg-9_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5test5_5.15.2+dfsg-9_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5widgets5_5.15.2+dfsg-9_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5xml5_5.15.2+dfsg-9_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/qtbase5-dev_5.15.2+dfsg-9_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/qtbase5-dev-tools_5.15.2+dfsg-9_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/r/re2/libre2-9_20210201+dfsg-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/r/re2/libre2-dev_20210201+dfsg-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2+b2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/shared-mime-info/shared-mime-info_2.0-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/snappy/libsnappy1v5_1.1.8-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/snappy/libsnappy-dev_1.1.8-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/speech-dispatcher/libspeechd2_0.11.4-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.11.4-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/sqlite3/libsqlite3-0_3.34.1-3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libsystemd0_251.3-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libsystemd-dev_251.3-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libudev1_251.3-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libudev-dev_251.3-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-31_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tiff/libtiff5_4.2.0-1+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tiff/libtiff-dev_4.2.0-1+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tiff/libtiffxx5_4.2.0-1+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/unbound/libunbound8_1.13.1-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libblkid1_2.36.1-8+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libblkid-dev_2.36.1-8+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libmount1_2.36.1-8+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libmount-dev_2.36.1-8+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libuuid1_2.36.1-8+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/uuid-dev_2.36.1-8+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/v/valgrind/valgrind_3.16.1-1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/v/vulkan-loader/libvulkan1_1.3.224.0-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/v/vulkan-loader/libvulkan-dev_1.3.224.0-1~bpo11+1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-bin_1.18.0-2~exp1.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-client0_1.18.0-2~exp1.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-cursor0_1.18.0-2~exp1.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-dev_1.18.0-2~exp1.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-egl1_1.18.0-2~exp1.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-egl-backend-dev_1.18.0-2~exp1.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-server0_1.18.0-2~exp1.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland-protocols/wayland-protocols_1.20-1_all.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-image/libxcb-image0_0.4.0-1+b3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-image/libxcb-image0-dev_0.4.0-1+b3_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-keysyms/libxcb-keysyms1_0.4.0-1+b2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util/libxcb-util1_0.4.0-1+b1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util/libxcb-util-dev_0.4.0-1+b1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0_0.3.9-1+b1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0-dev_0.3.9-1+b1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-wm/libxcb-icccm4_0.4.1-1.1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xft/libxft2_2.3.2-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xft/libxft-dev_2.3.2-2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xorgproto/x11proto-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xz-utils/liblzma5_5.2.5-2.1~deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2+deb11u2_arm64.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-2+deb11u2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/alsa-lib/libasound2_1.2.4-1.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/alsa-lib/libasound2-dev_1.2.4-1.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/atk1.0/libatk1.0-0_2.38.0-1~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/atk1.0/libatk1.0-dev_2.38.0-1~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.38.0-4~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.38.0-4~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.44.1-1~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.44.1-1~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/attr/libattr1_2.4.48-6_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/audit/libaudit1_3.0-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/avahi/libavahi-client3_0.8-5+deb11u2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/avahi/libavahi-common3_0.8-5+deb11u2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/bluez/libbluetooth3_5.55-3.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/bluez/libbluetooth-dev_5.55-3.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/brotli/libbrotli1_1.0.9-2+b2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/brotli/libbrotli-dev_1.0.9-2+b2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo2_1.16.0-5_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo2-dev_1.16.0-5_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-5_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-5_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/colord/libcolord2_1.4.5-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcups2_2.3.3op2-3+deb11u2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcups2-dev_2.3.3op2-3+deb11u2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcupsimage2_2.3.3op2-3+deb11u2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcupsimage2-dev_2.3.3op2-3+deb11u2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/curl/libcurl3-gnutls_7.88.1-7~bpo11+2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/curl/libcurl4-gnutls-dev_7.88.1-7~bpo11+2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.27+dfsg-2.1+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.8_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-6_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/dbus/libdbus-1-3_1.12.24-0+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/dbus/libdbus-1-dev_1.12.24-0+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/double-conversion/libdouble-conversion3_3.1.5-6.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.46.6-1~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/e2fsprogs/libcom-err2_1.46.6-1~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/elfutils/libelf1_0.187-1~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/elfutils/libelf-dev_0.187-1~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/expat/libexpat1_2.2.10-2+deb11u5_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/expat/libexpat1-dev_2.2.10-2+deb11u5_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/flac/libflac8_1.3.3-2+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/flac/libflac-dev_1.3.3-2+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-4.2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fontconfig/libfontconfig-dev_2.13.1-4.2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/freetype/libfreetype6_2.10.4+dfsg-1+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/freetype/libfreetype-dev_2.10.4+dfsg-1+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fribidi/libfribidi0_1.0.8-2+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fribidi/libfribidi-dev_1.0.8-2+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libasan6_10.2.1-6_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libatomic1_10.2.1-6_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libgcc-10-dev_10.2.1-6_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libgcc-s1_10.2.1-6_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libgomp1_10.2.1-6_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libitm1_10.2.1-6_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/liblsan0_10.2.1-6_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libstdc++-10-dev_10.2.1-6_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libstdc++6_10.2.1-6_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libtsan0_10.2.1-6_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libubsan1_10.2.1-6_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-0_2.42.2+dfsg-1+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-dev_2.42.2+dfsg-1+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glib2.0/libglib2.0-0_2.66.8-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glib2.0/libglib2.0-dev_2.66.8-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glibc/libc6_2.31-13+deb11u5_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glibc/libc6-dev_2.31-13+deb11u5_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls28-dev_3.7.1-5+deb11u3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls30_3.7.1-5+deb11u3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls-dane0_3.7.1-5+deb11u3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls-openssl27_3.7.1-5+deb11u3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutlsxx28_3.7.1-5+deb11u3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.4+dfsg1-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.4+dfsg1-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphite2/libgraphite2-3_1.3.14-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphite2/libgraphite2-dev_1.3.14-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.33-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.24-4+deb11u3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.24-4+deb11u3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk4/libgtk-4-1_4.8.3+ds-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk4/libgtk-4-dev_4.8.3+ds-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz0b_2.7.4-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.7.4-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.7.4-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.7.4-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/i/icu/libicu67_67.1-7_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/j/jbigkit/libjbig-dev_2.1-3.1+b2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.6.2-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/keyutils/libkeyutils1_1.6.1-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/krb5-multidev_1.18.3-6+deb11u3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6+deb11u3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libgssrpc4_1.18.3-6+deb11u3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libk5crypto3_1.18.3-6+deb11u3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkadm5clnt-mit12_1.18.3-6+deb11u3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkadm5srv-mit12_1.18.3-6+deb11u3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkdb5-10_1.18.3-6+deb11u3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkrb5-3_1.18.3-6+deb11u3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkrb5-dev_1.18.3-6+deb11u3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkrb5support0_1.18.3-6+deb11u3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libb/libb2/libb2-1_0.98.1-1.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libb/libbsd/libbsd0_0.11.3-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcap2/libcap2_2.44-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcap2/libcap-dev_2.44-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2.2+b1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcloudproviders/libcloudproviders0_0.3.0-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdatrie/libdatrie1_0.2.13-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdatrie/libdatrie-dev_0.2.13-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr492+repack1-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr492+repack1-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr492+repack1-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr492+repack1-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdeflate/libdeflate0_1.10-2~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdeflate/libdeflate-dev_1.10-2~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm2_2.4.104-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.104-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-dev_2.4.104-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-etnaviv1_2.4.104-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-freedreno1_2.4.104-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.104-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.104-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-tegra0_2.4.104-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libepoxy/libepoxy0_1.5.8-1~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.8-1~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libevdev/libevdev2_1.11.0+dfsg-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libevdev/libevdev-dev_1.11.0+dfsg-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libevent/libevent-2.1-7_2.1.12-stable-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libf/libffi/libffi7_3.3-6_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libf/libffi/libffi-dev_3.3-6_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.7-6_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.7-6_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libegl1_1.3.2-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libegl-dev_1.3.2-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgl1_1.3.2-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgl-dev_1.3.2-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgles1_1.3.2-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgles2_1.3.2-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgles-dev_1.3.2-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglvnd0_1.3.2-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglvnd-dev_1.3.2-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglx0_1.3.2-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglx-dev_1.3.2-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libopengl0_1.3.2-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgpg-error/libgpg-error0_1.38-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.38-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgudev/libgudev-1.0-0_234-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libice/libice6_1.0.10-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libidn2/libidn2-0_2.3.0-5_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libidn/libidn11_1.33-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libinput/libinput10_1.16.4-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libinput/libinput-dev_1.16.4-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.0.6-4_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_2.0.6-4_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjsoncpp/libjsoncpp24_1.9.4-4_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.9.4-4_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libm/libmd/libmd0_1.0.3-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libn/libnsl/libnsl2_1.3.0-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b10_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libo/libogg/libogg0_1.3.4-0.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libo/libogg/libogg-dev_1.3.4-0.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpciaccess/libpciaccess0_0.16-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libproxy/libproxy1v5_0.4.17-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpsl/libpsl5_0.21.0-1.2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libselinux/libselinux1_3.1-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libselinux/libselinux1-dev_3.1-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsepol/libsepol1_3.1-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsepol/libsepol1-dev_3.1-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsm/libsm6_1.2.3-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsndfile/libsndfile1_1.0.31-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.72.0-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.72.0-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libssh2/libssh2-1_1.9.0-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libthai/libthai0_0.1.28-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libthai/libthai0_0.1.28-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libthai/libthai-dev_0.1.28-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libtirpc/libtirpc3_1.3.1-1+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libtool/libltdl7_2.4.6-15_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libu/libunistring/libunistring2_0.9.10-4_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libu/libutempter/libutempter0_1.2.1-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libu/libutempter/libutempter-dev_1.2.1-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva2_2.17.0-1~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-dev_2.17.0-1~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-drm2_2.17.0-1~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-glx2_2.17.0-1~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-wayland2_2.17.0-1~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-x11-2_2.17.0-1~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libvorbis/libvorbis0a_1.3.7-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.7-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwacom/libwacom2_1.8-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebp6_0.6.1-2.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebp7_1.2.4-0.2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-6_1.7.2-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-dev_1.7.2-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-xcb1_1.7.2-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-xcb-dev_1.7.2-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxau/libxau6_1.0.9-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxau/libxau-dev_1.0.9-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb1_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb1-dev_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri2-0_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri3-0_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri3-dev_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-glx0_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-present0_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-present-dev_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-randr0_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-randr0-dev_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-render0_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-render0-dev_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shape0_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shape0-dev_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shm0_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-sync1_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-sync-dev_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xfixes0_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xfixes0-dev_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xinerama0_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xinput0_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xkb1_1.14-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.5-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.5-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcrypt/libcrypt1_4.4.18-4_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcrypt/libcrypt-dev_4.4.18-4_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxext/libxext6_1.3.3-1.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxext/libxext-dev_1.3.3-1.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxi/libxi6_1.7.10-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxi/libxi-dev_1.7.10-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxkbcommon/libxkbcommon0_1.0.3-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_1.0.3-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxkbcommon/libxkbcommon-x11-0_1.0.3-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxml2/libxml2_2.9.10+dfsg-6.7+deb11u4_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxml2/libxml2-dev_2.9.10+dfsg-6.7+deb11u4_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxshmfence/libxshmfence-dev_1.3-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxslt/libxslt1.1_1.1.34-4+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxslt/libxslt1-dev_1.1.34-4+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxss/libxss1_1.2.3-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxt/libxt6_1.2.0-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxt/libxt-dev_1.2.0-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libz/libzstd/libzstd1_1.4.8+dfsg-2.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lcms2/liblcms2-2_2.12~rc1-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lerc/liblerc4_4.0.0+ds-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/linux/linux-libc-dev_6.1.20-2~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lz4/liblz4-1_1.9.3-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lzo2/liblzo2-2_2.10-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/md4c/libmd4c0_0.4.7-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libegl1-mesa_20.3.5-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libegl1-mesa-dev_20.3.5-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgbm1_20.3.5-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgbm-dev_20.3.5-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgl1-mesa-dev_20.3.5-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgl1-mesa-glx_20.3.5-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libglapi-mesa_20.3.5-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libwayland-egl1-mesa_20.3.5-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/mesa-common-dev_20.3.5-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/minizip/libminizip1_1.1-8+b1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mtdev/libmtdev1_1.1.6-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libncurses6_6.2+20201114-2+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libncurses-dev_6.2+20201114-2+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libncursesw6_6.2+20201114-2+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libtinfo6_6.2+20201114-2+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nettle/libhogweed6_3.7.3-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nettle/libnettle8_3.7.3-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nghttp2/libnghttp2-14_1.43.0-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nspr/libnspr4_4.29-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nspr/libnspr4-dev_4.29-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nss/libnss3_3.61-1+deb11u3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nss/libnss3-dev_3.61-1+deb11u3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/openldap/libldap-2.4-2_2.4.59+dfsg-1~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/openssl/libssl1.1_1.1.1n-0+deb11u4_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/openssl/libssl-dev_1.1.1n-0+deb11u4_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/opus/libopus0_1.3.1-0.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/opus/libopus-dev_1.3.1-0.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/p11-kit/libp11-kit0_0.23.22-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pam/libpam0g_1.4.0-9+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pam/libpam0g-dev_1.4.0-9+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpango-1.0-0_1.46.2-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpango1.0-dev_1.46.2-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.46.2-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.46.2-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.46.2-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pciutils/libpci3_3.7.0-5_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pciutils/libpci-dev_3.7.0-5_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-16-0_10.36-2+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-32-0_10.36-2+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-8-0_10.36-2+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-dev_10.36-2+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-posix2_10.36-2+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre16-3_8.39-13_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre32-3_8.39-13_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre3_8.39-13_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre3-dev_8.39-13_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-13_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pipewire/libpipewire-0.3-0_0.3.65-2~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pipewire/libpipewire-0.3-dev_0.3.65-2~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pipewire/libspa-0.2-dev_0.3.65-2~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pixman/libpixman-1-0_0.40.0-1.1~deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pixman/libpixman-1-dev_0.40.0-1.1~deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pulseaudio/libpulse0_14.2-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pulseaudio/libpulse-dev_14.2-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_14.2-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6concurrent6_6.4.2+dfsg-10~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6core6_6.4.2+dfsg-10~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6dbus6_6.4.2+dfsg-10~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6gui6_6.4.2+dfsg-10~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6network6_6.4.2+dfsg-10~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6opengl6_6.4.2+dfsg-10~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6openglwidgets6_6.4.2+dfsg-10~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6printsupport6_6.4.2+dfsg-10~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6sql6_6.4.2+dfsg-10~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6test6_6.4.2+dfsg-10~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6widgets6_6.4.2+dfsg-10~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6xml6_6.4.2+dfsg-10~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/qt6-base-dev_6.4.2+dfsg-10~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/qt6-base-dev-tools_6.4.2+dfsg-10~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5concurrent5_5.15.2+dfsg-9_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5core5a_5.15.2+dfsg-9_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5dbus5_5.15.2+dfsg-9_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5gui5_5.15.2+dfsg-9_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5network5_5.15.2+dfsg-9_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5printsupport5_5.15.2+dfsg-9_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5sql5_5.15.2+dfsg-9_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5test5_5.15.2+dfsg-9_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5widgets5_5.15.2+dfsg-9_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5xml5_5.15.2+dfsg-9_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/qtbase5-dev_5.15.2+dfsg-9_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/qtbase5-dev-tools_5.15.2+dfsg-9_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/r/re2/libre2-9_20210201+dfsg-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/r/re2/libre2-dev_20210201+dfsg-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2+b2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/shared-mime-info/shared-mime-info_2.0-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/snappy/libsnappy1v5_1.1.8-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/snappy/libsnappy-dev_1.1.8-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/speech-dispatcher/libspeechd2_0.11.4-2~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.11.4-2~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/sqlite3/libsqlite3-0_3.34.1-3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libsystemd0_252.5-2~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libsystemd-dev_252.5-2~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libudev1_252.5-2~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libudev-dev_252.5-2~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-31_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiff5_4.2.0-1+deb11u4_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiff6_4.5.0-6_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiff-dev_4.2.0-1+deb11u4_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiffxx5_4.2.0-1+deb11u4_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tslib/libts0_1.22-1+b1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/unbound/libunbound8_1.17.1-2~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libblkid1_2.36.1-8+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libblkid-dev_2.36.1-8+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libmount1_2.36.1-8+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libmount-dev_2.36.1-8+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libuuid1_2.36.1-8+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/uuid-dev_2.36.1-8+deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/v/valgrind/valgrind_3.16.1-1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/v/vulkan-loader/libvulkan1_1.3.224.0-1~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/v/vulkan-loader/libvulkan-dev_1.3.224.0-1~bpo11+1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-bin_1.18.0-2~exp1.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-client0_1.18.0-2~exp1.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-cursor0_1.18.0-2~exp1.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-dev_1.18.0-2~exp1.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-egl1_1.18.0-2~exp1.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-egl-backend-dev_1.18.0-2~exp1.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-server0_1.18.0-2~exp1.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland-protocols/wayland-protocols_1.20-1_all.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-image/libxcb-image0_0.4.0-1+b3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-image/libxcb-image0-dev_0.4.0-1+b3_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-keysyms/libxcb-keysyms1_0.4.0-1+b2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util/libxcb-util1_0.4.0-1+b1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util/libxcb-util-dev_0.4.0-1+b1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0_0.3.9-1+b1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0-dev_0.3.9-1+b1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-wm/libxcb-icccm4_0.4.1-1.1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xft/libxft2_2.3.2-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xft/libxft-dev_2.3.2-2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xorgproto/x11proto-dev_2020.1-1_all.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xz-utils/liblzma5_5.2.5-2.1~deb11u1_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2+deb11u2_arm64.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-2+deb11u2_arm64.deb diff --git a/build/linux/sysroot_scripts/generated_package_lists/bullseye.armel b/build/linux/sysroot_scripts/generated_package_lists/bullseye.armel index d67cd5d..bb1d76d 100644 --- a/build/linux/sysroot_scripts/generated_package_lists/bullseye.armel +++ b/build/linux/sysroot_scripts/generated_package_lists/bullseye.armel @@ -1,389 +1,407 @@ -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/alsa-lib/libasound2_1.2.4-1.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/alsa-lib/libasound2-dev_1.2.4-1.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/atk1.0/libatk1.0-0_2.38.0-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/atk1.0/libatk1.0-dev_2.38.0-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.38.0-4~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.38.0-4~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.44.1-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.44.1-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/attr/libattr1_2.4.48-6_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/audit/libaudit1_3.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/avahi/libavahi-client3_0.8-5+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/avahi/libavahi-common3_0.8-5+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/bluez/libbluetooth3_5.55-3.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/bluez/libbluetooth-dev_5.55-3.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/brotli/libbrotli1_1.0.9-2+b2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/brotli/libbrotli-dev_1.0.9-2+b2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo2_1.16.0-5_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo2-dev_1.16.0-5_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-5_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-5_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/colord/libcolord2_1.4.5-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcups2_2.3.3op2-3+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcups2-dev_2.3.3op2-3+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcupsimage2_2.3.3op2-3+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcupsimage2-dev_2.3.3op2-3+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/curl/libcurl3-gnutls_7.85.0-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/curl/libcurl4-gnutls-dev_7.85.0-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.27+dfsg-2.1+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.8_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-6_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/dbus/libdbus-1-3_1.12.20-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/dbus/libdbus-1-dev_1.12.20-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/double-conversion/libdouble-conversion3_3.1.5-6.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.46.5-2~bpo11+2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/e2fsprogs/libcom-err2_1.46.5-2~bpo11+2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/elfutils/libelf1_0.187-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/elfutils/libelf-dev_0.187-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/expat/libexpat1_2.2.10-2+deb11u3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/expat/libexpat1-dev_2.2.10-2+deb11u3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/flac/libflac8_1.3.3-2+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/flac/libflac-dev_1.3.3-2+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-4.2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fontconfig/libfontconfig-dev_2.13.1-4.2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/freetype/libfreetype6_2.10.4+dfsg-1+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/freetype/libfreetype-dev_2.10.4+dfsg-1+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fribidi/libfribidi0_1.0.8-2+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fribidi/libfribidi-dev_1.0.8-2+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libasan6_10.2.1-6_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libatomic1_10.2.1-6_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libgcc-10-dev_10.2.1-6_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libgcc-s1_10.2.1-6_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libgomp1_10.2.1-6_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libstdc++-10-dev_10.2.1-6_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libstdc++6_10.2.1-6_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libubsan1_10.2.1-6_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-0_2.42.2+dfsg-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-dev_2.42.2+dfsg-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glib2.0/libglib2.0-0_2.66.8-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glib2.0/libglib2.0-dev_2.66.8-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glibc/libc6_2.31-13+deb11u5_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glibc/libc6-dev_2.31-13+deb11u5_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls28-dev_3.7.1-5+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls30_3.7.1-5+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls-dane0_3.7.1-5+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls-openssl27_3.7.1-5+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutlsxx28_3.7.1-5+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.4+dfsg1-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.4+dfsg1-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphite2/libgraphite2-3_1.3.14-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphite2/libgraphite2-dev_1.3.14-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.33-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.24-4+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.24-4+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk4/libgtk-4-1_4.8.1+ds-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk4/libgtk-4-dev_4.8.1+ds-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz0b_2.7.4-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.7.4-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.7.4-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.7.4-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/i/icu/libicu67_67.1-7_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/j/jbigkit/libjbig-dev_2.1-3.1+b2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.6.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/keyutils/libkeyutils1_1.6.1-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/krb5-multidev_1.18.3-6+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libgssrpc4_1.18.3-6+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libk5crypto3_1.18.3-6+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkadm5clnt-mit12_1.18.3-6+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkadm5srv-mit12_1.18.3-6+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkdb5-10_1.18.3-6+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkrb5-3_1.18.3-6+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkrb5-dev_1.18.3-6+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkrb5support0_1.18.3-6+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libb/libbsd/libbsd0_0.11.3-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcap2/libcap2_2.44-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcap2/libcap-dev_2.44-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2.2+b1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcloudproviders/libcloudproviders0_0.3.0-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdatrie/libdatrie1_0.2.13-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdatrie/libdatrie-dev_0.2.13-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr492+repack1-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr492+repack1-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr492+repack1-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr492+repack1-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdeflate/libdeflate0_1.10-2~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdeflate/libdeflate-dev_1.10-2~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm2_2.4.104-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.104-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-dev_2.4.104-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-exynos1_2.4.104-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-freedreno1_2.4.104-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.104-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-omap1_2.4.104-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.104-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-tegra0_2.4.104-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libepoxy/libepoxy0_1.5.8-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.8-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libevdev/libevdev2_1.11.0+dfsg-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libevdev/libevdev-dev_1.11.0+dfsg-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libevent/libevent-2.1-7_2.1.12-stable-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libf/libffi/libffi7_3.3-6_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libf/libffi/libffi-dev_3.3-6_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.7-6_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.7-6_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libegl1_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libegl-dev_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgl1_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgl-dev_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgles1_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgles2_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgles-dev_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglvnd0_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglvnd-dev_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglx0_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglx-dev_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libopengl0_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgpg-error/libgpg-error0_1.38-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.38-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgudev/libgudev-1.0-0_234-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libice/libice6_1.0.10-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libidn2/libidn2-0_2.3.0-5_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libidn/libidn11_1.33-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libinput/libinput10_1.16.4-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libinput/libinput-dev_1.16.4-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.0.6-4_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_2.0.6-4_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjsoncpp/libjsoncpp24_1.9.4-4_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.9.4-4_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libm/libmd/libmd0_1.0.3-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libn/libnsl/libnsl2_1.3.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b10_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libo/libogg/libogg0_1.3.4-0.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libo/libogg/libogg-dev_1.3.4-0.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpciaccess/libpciaccess0_0.16-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpsl/libpsl5_0.21.0-1.2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libselinux/libselinux1_3.1-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libselinux/libselinux1-dev_3.1-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsepol/libsepol1_3.1-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsepol/libsepol1-dev_3.1-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsm/libsm6_1.2.3-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsndfile/libsndfile1_1.0.31-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.72.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.72.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libssh2/libssh2-1_1.9.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libthai/libthai0_0.1.28-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libthai/libthai-dev_0.1.28-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libtirpc/libtirpc3_1.3.1-1+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libtool/libltdl7_2.4.6-15_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libu/libunistring/libunistring2_0.9.10-4_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libu/libutempter/libutempter0_1.2.1-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libu/libutempter/libutempter-dev_1.2.1-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva2_2.14.0-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-dev_2.14.0-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-drm2_2.14.0-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-glx2_2.14.0-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-wayland2_2.14.0-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-x11-2_2.14.0-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libvorbis/libvorbis0a_1.3.7-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.7-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwacom/libwacom2_1.8-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebp6_0.6.1-2.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-6_1.7.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-dev_1.7.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-xcb1_1.7.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-xcb-dev_1.7.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxau/libxau6_1.0.9-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxau/libxau-dev_1.0.9-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb1_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb1-dev_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri2-0_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri3-0_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri3-dev_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-glx0_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-present0_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-present-dev_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-randr0_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-randr0-dev_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-render0_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-render0-dev_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shape0_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shape0-dev_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shm0_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-sync1_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-sync-dev_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xfixes0_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xfixes0-dev_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xinerama0_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xinput0_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xkb1_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.5-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.5-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcrypt/libcrypt1_4.4.18-4_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcrypt/libcrypt-dev_4.4.18-4_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxext/libxext6_1.3.3-1.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxext/libxext-dev_1.3.3-1.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxi/libxi6_1.7.10-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxi/libxi-dev_1.7.10-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxkbcommon/libxkbcommon0_1.0.3-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_1.0.3-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxkbcommon/libxkbcommon-x11-0_1.0.3-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxml2/libxml2_2.9.10+dfsg-6.7+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxml2/libxml2-dev_2.9.10+dfsg-6.7+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxshmfence/libxshmfence-dev_1.3-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxslt/libxslt1.1_1.1.34-4+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxslt/libxslt1-dev_1.1.34-4+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxss/libxss1_1.2.3-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxt/libxt6_1.2.0-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxt/libxt-dev_1.2.0-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libz/libzstd/libzstd1_1.4.8+dfsg-2.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/lcms2/liblcms2-2_2.12~rc1-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/linux/linux-libc-dev_6.0.3-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/lz4/liblz4-1_1.9.3-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/lzo2/liblzo2-2_2.10-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/md4c/libmd4c0_0.4.7-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libegl1-mesa_20.3.5-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libegl1-mesa-dev_20.3.5-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgbm1_20.3.5-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgbm-dev_20.3.5-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgl1-mesa-dev_20.3.5-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgl1-mesa-glx_20.3.5-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libglapi-mesa_20.3.5-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libwayland-egl1-mesa_20.3.5-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/mesa-common-dev_20.3.5-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/minizip/libminizip1_1.1-8+b1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mtdev/libmtdev1_1.1.6-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libncurses6_6.2+20201114-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libncurses-dev_6.2+20201114-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libncursesw6_6.2+20201114-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libtinfo6_6.2+20201114-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nettle/libhogweed6_3.7.3-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nettle/libnettle8_3.7.3-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nghttp2/libnghttp2-14_1.43.0-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nspr/libnspr4_4.29-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nspr/libnspr4-dev_4.29-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nss/libnss3_3.61-1+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nss/libnss3-dev_3.61-1+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/openldap/libldap-2.4-2_2.4.59+dfsg-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/openssl/libssl1.1_1.1.1n-0+deb11u3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/openssl/libssl-dev_1.1.1n-0+deb11u3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/opus/libopus0_1.3.1-0.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/opus/libopus-dev_1.3.1-0.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/p11-kit/libp11-kit0_0.23.22-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pam/libpam0g_1.4.0-9+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pam/libpam0g-dev_1.4.0-9+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpango-1.0-0_1.46.2-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpango1.0-dev_1.46.2-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.46.2-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.46.2-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.46.2-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pciutils/libpci3_3.7.0-5_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pciutils/libpci-dev_3.7.0-5_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-16-0_10.36-2+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-32-0_10.36-2+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-8-0_10.36-2+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-dev_10.36-2+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-posix2_10.36-2+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre16-3_8.39-13_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre32-3_8.39-13_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre3_8.39-13_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre3-dev_8.39-13_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-13_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pipewire/libpipewire-0.3-0_0.3.58-2~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pipewire/libpipewire-0.3-dev_0.3.58-2~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pipewire/libspa-0.2-dev_0.3.58-2~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pixman/libpixman-1-0_0.40.0-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pixman/libpixman-1-dev_0.40.0-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pulseaudio/libpulse0_14.2-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pulseaudio/libpulse-dev_14.2-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_14.2-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5concurrent5_5.15.2+dfsg-9_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5core5a_5.15.2+dfsg-9_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5dbus5_5.15.2+dfsg-9_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5gui5_5.15.2+dfsg-9_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5network5_5.15.2+dfsg-9_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5printsupport5_5.15.2+dfsg-9_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5sql5_5.15.2+dfsg-9_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5test5_5.15.2+dfsg-9_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5widgets5_5.15.2+dfsg-9_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5xml5_5.15.2+dfsg-9_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/qtbase5-dev_5.15.2+dfsg-9_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/qtbase5-dev-tools_5.15.2+dfsg-9_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/r/re2/libre2-9_20210201+dfsg-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/r/re2/libre2-dev_20210201+dfsg-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2+b2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/shared-mime-info/shared-mime-info_2.0-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/snappy/libsnappy1v5_1.1.8-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/snappy/libsnappy-dev_1.1.8-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/speech-dispatcher/libspeechd2_0.11.4-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.11.4-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/sqlite3/libsqlite3-0_3.34.1-3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libsystemd0_251.3-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libsystemd-dev_251.3-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libudev1_251.3-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libudev-dev_251.3-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-31_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tiff/libtiff5_4.2.0-1+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tiff/libtiff-dev_4.2.0-1+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tiff/libtiffxx5_4.2.0-1+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/unbound/libunbound8_1.13.1-1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libblkid1_2.36.1-8+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libblkid-dev_2.36.1-8+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libmount1_2.36.1-8+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libmount-dev_2.36.1-8+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libuuid1_2.36.1-8+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/uuid-dev_2.36.1-8+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/v/vulkan-loader/libvulkan1_1.3.224.0-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/v/vulkan-loader/libvulkan-dev_1.3.224.0-1~bpo11+1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-bin_1.18.0-2~exp1.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-client0_1.18.0-2~exp1.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-cursor0_1.18.0-2~exp1.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-dev_1.18.0-2~exp1.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-egl1_1.18.0-2~exp1.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-egl-backend-dev_1.18.0-2~exp1.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-server0_1.18.0-2~exp1.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland-protocols/wayland-protocols_1.20-1_all.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-image/libxcb-image0_0.4.0-1+b3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-image/libxcb-image0-dev_0.4.0-1+b3_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-keysyms/libxcb-keysyms1_0.4.0-1+b2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util/libxcb-util1_0.4.0-1+b1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util/libxcb-util-dev_0.4.0-1+b1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0_0.3.9-1+b1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0-dev_0.3.9-1+b1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-wm/libxcb-icccm4_0.4.1-1.1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xft/libxft2_2.3.2-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xft/libxft-dev_2.3.2-2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xorgproto/x11proto-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xz-utils/liblzma5_5.2.5-2.1~deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2+deb11u2_armel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-2+deb11u2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/alsa-lib/libasound2_1.2.4-1.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/alsa-lib/libasound2-dev_1.2.4-1.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/atk1.0/libatk1.0-0_2.38.0-1~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/atk1.0/libatk1.0-dev_2.38.0-1~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.38.0-4~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.38.0-4~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.44.1-1~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.44.1-1~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/attr/libattr1_2.4.48-6_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/audit/libaudit1_3.0-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/avahi/libavahi-client3_0.8-5+deb11u2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/avahi/libavahi-common3_0.8-5+deb11u2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/bluez/libbluetooth3_5.55-3.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/bluez/libbluetooth-dev_5.55-3.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/brotli/libbrotli1_1.0.9-2+b2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/brotli/libbrotli-dev_1.0.9-2+b2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo2_1.16.0-5_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo2-dev_1.16.0-5_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-5_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-5_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/colord/libcolord2_1.4.5-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcups2_2.3.3op2-3+deb11u2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcups2-dev_2.3.3op2-3+deb11u2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcupsimage2_2.3.3op2-3+deb11u2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcupsimage2-dev_2.3.3op2-3+deb11u2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/curl/libcurl3-gnutls_7.88.1-7~bpo11+2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/curl/libcurl4-gnutls-dev_7.88.1-7~bpo11+2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.27+dfsg-2.1+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.8_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-6_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/dbus/libdbus-1-3_1.12.24-0+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/dbus/libdbus-1-dev_1.12.24-0+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/double-conversion/libdouble-conversion3_3.1.5-6.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.46.6-1~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/e2fsprogs/libcom-err2_1.46.6-1~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/elfutils/libelf1_0.187-1~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/elfutils/libelf-dev_0.187-1~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/expat/libexpat1_2.2.10-2+deb11u5_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/expat/libexpat1-dev_2.2.10-2+deb11u5_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/flac/libflac8_1.3.3-2+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/flac/libflac-dev_1.3.3-2+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-4.2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fontconfig/libfontconfig-dev_2.13.1-4.2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/freetype/libfreetype6_2.10.4+dfsg-1+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/freetype/libfreetype-dev_2.10.4+dfsg-1+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fribidi/libfribidi0_1.0.8-2+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fribidi/libfribidi-dev_1.0.8-2+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libasan6_10.2.1-6_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libatomic1_10.2.1-6_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libgcc-10-dev_10.2.1-6_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libgcc-s1_10.2.1-6_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libgomp1_10.2.1-6_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libstdc++-10-dev_10.2.1-6_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libstdc++6_10.2.1-6_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libubsan1_10.2.1-6_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-0_2.42.2+dfsg-1+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-dev_2.42.2+dfsg-1+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glib2.0/libglib2.0-0_2.66.8-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glib2.0/libglib2.0-dev_2.66.8-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glibc/libc6_2.31-13+deb11u5_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glibc/libc6-dev_2.31-13+deb11u5_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls28-dev_3.7.1-5+deb11u3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls30_3.7.1-5+deb11u3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls-dane0_3.7.1-5+deb11u3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls-openssl27_3.7.1-5+deb11u3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutlsxx28_3.7.1-5+deb11u3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.4+dfsg1-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.4+dfsg1-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphite2/libgraphite2-3_1.3.14-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphite2/libgraphite2-dev_1.3.14-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.33-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.24-4+deb11u3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.24-4+deb11u3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk4/libgtk-4-1_4.8.3+ds-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk4/libgtk-4-dev_4.8.3+ds-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz0b_2.7.4-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.7.4-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.7.4-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.7.4-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/i/icu/libicu67_67.1-7_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/j/jbigkit/libjbig-dev_2.1-3.1+b2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.6.2-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/keyutils/libkeyutils1_1.6.1-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/krb5-multidev_1.18.3-6+deb11u3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6+deb11u3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libgssrpc4_1.18.3-6+deb11u3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libk5crypto3_1.18.3-6+deb11u3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkadm5clnt-mit12_1.18.3-6+deb11u3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkadm5srv-mit12_1.18.3-6+deb11u3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkdb5-10_1.18.3-6+deb11u3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkrb5-3_1.18.3-6+deb11u3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkrb5-dev_1.18.3-6+deb11u3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkrb5support0_1.18.3-6+deb11u3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libb/libb2/libb2-1_0.98.1-1.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libb/libbsd/libbsd0_0.11.3-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcap2/libcap2_2.44-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcap2/libcap-dev_2.44-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2.2+b1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcloudproviders/libcloudproviders0_0.3.0-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdatrie/libdatrie1_0.2.13-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdatrie/libdatrie-dev_0.2.13-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr492+repack1-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr492+repack1-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr492+repack1-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr492+repack1-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdeflate/libdeflate0_1.10-2~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdeflate/libdeflate-dev_1.10-2~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm2_2.4.104-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.104-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-dev_2.4.104-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-exynos1_2.4.104-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-freedreno1_2.4.104-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.104-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-omap1_2.4.104-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.104-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-tegra0_2.4.104-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libepoxy/libepoxy0_1.5.8-1~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.8-1~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libevdev/libevdev2_1.11.0+dfsg-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libevdev/libevdev-dev_1.11.0+dfsg-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libevent/libevent-2.1-7_2.1.12-stable-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libf/libffi/libffi7_3.3-6_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libf/libffi/libffi-dev_3.3-6_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.7-6_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.7-6_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libegl1_1.3.2-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libegl-dev_1.3.2-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgl1_1.3.2-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgl-dev_1.3.2-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgles1_1.3.2-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgles2_1.3.2-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgles-dev_1.3.2-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglvnd0_1.3.2-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglvnd-dev_1.3.2-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglx0_1.3.2-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglx-dev_1.3.2-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libopengl0_1.3.2-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgpg-error/libgpg-error0_1.38-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.38-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgudev/libgudev-1.0-0_234-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libice/libice6_1.0.10-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libidn2/libidn2-0_2.3.0-5_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libidn/libidn11_1.33-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libinput/libinput10_1.16.4-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libinput/libinput-dev_1.16.4-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.0.6-4_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_2.0.6-4_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjsoncpp/libjsoncpp24_1.9.4-4_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.9.4-4_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libm/libmd/libmd0_1.0.3-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libn/libnsl/libnsl2_1.3.0-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b10_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libo/libogg/libogg0_1.3.4-0.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libo/libogg/libogg-dev_1.3.4-0.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpciaccess/libpciaccess0_0.16-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libproxy/libproxy1v5_0.4.17-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpsl/libpsl5_0.21.0-1.2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libselinux/libselinux1_3.1-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libselinux/libselinux1-dev_3.1-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsepol/libsepol1_3.1-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsepol/libsepol1-dev_3.1-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsm/libsm6_1.2.3-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsndfile/libsndfile1_1.0.31-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.72.0-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.72.0-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libssh2/libssh2-1_1.9.0-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libthai/libthai0_0.1.28-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libthai/libthai-dev_0.1.28-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libtirpc/libtirpc3_1.3.1-1+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libtool/libltdl7_2.4.6-15_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libu/libunistring/libunistring2_0.9.10-4_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libu/libutempter/libutempter0_1.2.1-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libu/libutempter/libutempter-dev_1.2.1-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva2_2.17.0-1~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-dev_2.17.0-1~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-drm2_2.17.0-1~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-glx2_2.17.0-1~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-wayland2_2.17.0-1~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-x11-2_2.17.0-1~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libvorbis/libvorbis0a_1.3.7-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.7-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwacom/libwacom2_1.8-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebp6_0.6.1-2.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebp7_1.2.4-0.2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-6_1.7.2-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-dev_1.7.2-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-xcb1_1.7.2-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-xcb-dev_1.7.2-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxau/libxau6_1.0.9-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxau/libxau-dev_1.0.9-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb1_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb1-dev_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri2-0_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri3-0_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri3-dev_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-glx0_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-present0_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-present-dev_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-randr0_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-randr0-dev_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-render0_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-render0-dev_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shape0_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shape0-dev_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shm0_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-sync1_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-sync-dev_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xfixes0_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xfixes0-dev_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xinerama0_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xinput0_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xkb1_1.14-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.5-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.5-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcrypt/libcrypt1_4.4.18-4_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcrypt/libcrypt-dev_4.4.18-4_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxext/libxext6_1.3.3-1.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxext/libxext-dev_1.3.3-1.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxi/libxi6_1.7.10-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxi/libxi-dev_1.7.10-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxkbcommon/libxkbcommon0_1.0.3-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_1.0.3-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxkbcommon/libxkbcommon-x11-0_1.0.3-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxml2/libxml2_2.9.10+dfsg-6.7+deb11u4_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxml2/libxml2-dev_2.9.10+dfsg-6.7+deb11u4_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxshmfence/libxshmfence-dev_1.3-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxslt/libxslt1.1_1.1.34-4+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxslt/libxslt1-dev_1.1.34-4+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxss/libxss1_1.2.3-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxt/libxt6_1.2.0-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxt/libxt-dev_1.2.0-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libz/libzstd/libzstd1_1.4.8+dfsg-2.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lcms2/liblcms2-2_2.12~rc1-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lerc/liblerc4_4.0.0+ds-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/linux/linux-libc-dev_6.1.20-2~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lz4/liblz4-1_1.9.3-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lzo2/liblzo2-2_2.10-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/md4c/libmd4c0_0.4.7-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libegl1-mesa_20.3.5-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libegl1-mesa-dev_20.3.5-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgbm1_20.3.5-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgbm-dev_20.3.5-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgl1-mesa-dev_20.3.5-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgl1-mesa-glx_20.3.5-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libglapi-mesa_20.3.5-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libwayland-egl1-mesa_20.3.5-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/mesa-common-dev_20.3.5-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/minizip/libminizip1_1.1-8+b1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mtdev/libmtdev1_1.1.6-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libncurses6_6.2+20201114-2+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libncurses-dev_6.2+20201114-2+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libncursesw6_6.2+20201114-2+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libtinfo6_6.2+20201114-2+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nettle/libhogweed6_3.7.3-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nettle/libnettle8_3.7.3-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nghttp2/libnghttp2-14_1.43.0-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nspr/libnspr4_4.29-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nspr/libnspr4-dev_4.29-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nss/libnss3_3.61-1+deb11u3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nss/libnss3-dev_3.61-1+deb11u3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/openldap/libldap-2.4-2_2.4.59+dfsg-1~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/openssl/libssl1.1_1.1.1n-0+deb11u4_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/openssl/libssl-dev_1.1.1n-0+deb11u4_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/opus/libopus0_1.3.1-0.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/opus/libopus-dev_1.3.1-0.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/p11-kit/libp11-kit0_0.23.22-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pam/libpam0g_1.4.0-9+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pam/libpam0g-dev_1.4.0-9+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpango-1.0-0_1.46.2-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpango1.0-dev_1.46.2-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.46.2-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.46.2-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.46.2-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pciutils/libpci3_3.7.0-5_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pciutils/libpci-dev_3.7.0-5_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-16-0_10.36-2+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-32-0_10.36-2+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-8-0_10.36-2+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-dev_10.36-2+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-posix2_10.36-2+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre16-3_8.39-13_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre32-3_8.39-13_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre3_8.39-13_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre3-dev_8.39-13_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-13_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pipewire/libpipewire-0.3-0_0.3.65-2~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pipewire/libpipewire-0.3-dev_0.3.65-2~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pipewire/libspa-0.2-dev_0.3.65-2~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pixman/libpixman-1-0_0.40.0-1.1~deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pixman/libpixman-1-dev_0.40.0-1.1~deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pulseaudio/libpulse0_14.2-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pulseaudio/libpulse-dev_14.2-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_14.2-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6concurrent6_6.4.2+dfsg-10~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6core6_6.4.2+dfsg-10~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6dbus6_6.4.2+dfsg-10~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6gui6_6.4.2+dfsg-10~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6network6_6.4.2+dfsg-10~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6opengl6_6.4.2+dfsg-10~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6openglwidgets6_6.4.2+dfsg-10~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6printsupport6_6.4.2+dfsg-10~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6sql6_6.4.2+dfsg-10~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6test6_6.4.2+dfsg-10~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6widgets6_6.4.2+dfsg-10~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6xml6_6.4.2+dfsg-10~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/qt6-base-dev_6.4.2+dfsg-10~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/qt6-base-dev-tools_6.4.2+dfsg-10~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5concurrent5_5.15.2+dfsg-9_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5core5a_5.15.2+dfsg-9_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5dbus5_5.15.2+dfsg-9_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5gui5_5.15.2+dfsg-9_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5network5_5.15.2+dfsg-9_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5printsupport5_5.15.2+dfsg-9_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5sql5_5.15.2+dfsg-9_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5test5_5.15.2+dfsg-9_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5widgets5_5.15.2+dfsg-9_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5xml5_5.15.2+dfsg-9_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/qtbase5-dev_5.15.2+dfsg-9_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/qtbase5-dev-tools_5.15.2+dfsg-9_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/r/re2/libre2-9_20210201+dfsg-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/r/re2/libre2-dev_20210201+dfsg-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2+b2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/shared-mime-info/shared-mime-info_2.0-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/snappy/libsnappy1v5_1.1.8-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/snappy/libsnappy-dev_1.1.8-1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/speech-dispatcher/libspeechd2_0.11.4-2~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.11.4-2~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/sqlite3/libsqlite3-0_3.34.1-3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libsystemd0_252.5-2~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libsystemd-dev_252.5-2~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libudev1_252.5-2~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libudev-dev_252.5-2~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-31_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiff5_4.2.0-1+deb11u4_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiff6_4.5.0-6_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiff-dev_4.2.0-1+deb11u4_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiffxx5_4.2.0-1+deb11u4_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tslib/libts0_1.22-1+b1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/unbound/libunbound8_1.17.1-2~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libblkid1_2.36.1-8+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libblkid-dev_2.36.1-8+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libmount1_2.36.1-8+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libmount-dev_2.36.1-8+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libuuid1_2.36.1-8+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/uuid-dev_2.36.1-8+deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/v/vulkan-loader/libvulkan1_1.3.224.0-1~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/v/vulkan-loader/libvulkan-dev_1.3.224.0-1~bpo11+1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-bin_1.18.0-2~exp1.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-client0_1.18.0-2~exp1.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-cursor0_1.18.0-2~exp1.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-dev_1.18.0-2~exp1.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-egl1_1.18.0-2~exp1.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-egl-backend-dev_1.18.0-2~exp1.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-server0_1.18.0-2~exp1.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland-protocols/wayland-protocols_1.20-1_all.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-image/libxcb-image0_0.4.0-1+b3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-image/libxcb-image0-dev_0.4.0-1+b3_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-keysyms/libxcb-keysyms1_0.4.0-1+b2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util/libxcb-util1_0.4.0-1+b1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util/libxcb-util-dev_0.4.0-1+b1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0_0.3.9-1+b1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0-dev_0.3.9-1+b1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-wm/libxcb-icccm4_0.4.1-1.1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xft/libxft2_2.3.2-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xft/libxft-dev_2.3.2-2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xorgproto/x11proto-dev_2020.1-1_all.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xz-utils/liblzma5_5.2.5-2.1~deb11u1_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2+deb11u2_armel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-2+deb11u2_armel.deb diff --git a/build/linux/sysroot_scripts/generated_package_lists/bullseye.armhf b/build/linux/sysroot_scripts/generated_package_lists/bullseye.armhf new file mode 100644 index 0000000..2785535 --- /dev/null +++ b/build/linux/sysroot_scripts/generated_package_lists/bullseye.armhf @@ -0,0 +1,409 @@ +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/alsa-lib/libasound2_1.2.4-1.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/alsa-lib/libasound2-dev_1.2.4-1.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/atk1.0/libatk1.0-0_2.38.0-1~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/atk1.0/libatk1.0-dev_2.38.0-1~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.38.0-4~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.38.0-4~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.44.1-1~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.44.1-1~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/attr/libattr1_2.4.48-6_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/audit/libaudit1_3.0-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/avahi/libavahi-client3_0.8-5+deb11u2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/avahi/libavahi-common3_0.8-5+deb11u2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/bluez/libbluetooth3_5.55-3.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/bluez/libbluetooth-dev_5.55-3.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/brotli/libbrotli1_1.0.9-2+b2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/brotli/libbrotli-dev_1.0.9-2+b2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo2_1.16.0-5_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo2-dev_1.16.0-5_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-5_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-5_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/colord/libcolord2_1.4.5-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcups2_2.3.3op2-3+deb11u2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcups2-dev_2.3.3op2-3+deb11u2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcupsimage2_2.3.3op2-3+deb11u2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcupsimage2-dev_2.3.3op2-3+deb11u2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/curl/libcurl3-gnutls_7.88.1-7~bpo11+2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/curl/libcurl4-gnutls-dev_7.88.1-7~bpo11+2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.27+dfsg-2.1+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.8_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-6_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/dbus/libdbus-1-3_1.12.24-0+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/dbus/libdbus-1-dev_1.12.24-0+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/double-conversion/libdouble-conversion3_3.1.5-6.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.46.6-1~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/e2fsprogs/libcom-err2_1.46.6-1~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/elfutils/libelf1_0.187-1~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/elfutils/libelf-dev_0.187-1~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/expat/libexpat1_2.2.10-2+deb11u5_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/expat/libexpat1-dev_2.2.10-2+deb11u5_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/flac/libflac8_1.3.3-2+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/flac/libflac-dev_1.3.3-2+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-4.2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fontconfig/libfontconfig-dev_2.13.1-4.2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/freetype/libfreetype6_2.10.4+dfsg-1+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/freetype/libfreetype-dev_2.10.4+dfsg-1+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fribidi/libfribidi0_1.0.8-2+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fribidi/libfribidi-dev_1.0.8-2+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libasan6_10.2.1-6_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libatomic1_10.2.1-6_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libgcc-10-dev_10.2.1-6_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libgcc-s1_10.2.1-6_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libgomp1_10.2.1-6_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libstdc++-10-dev_10.2.1-6_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libstdc++6_10.2.1-6_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libubsan1_10.2.1-6_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-0_2.42.2+dfsg-1+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-dev_2.42.2+dfsg-1+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glib2.0/libglib2.0-0_2.66.8-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glib2.0/libglib2.0-dev_2.66.8-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glibc/libc6_2.31-13+deb11u5_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glibc/libc6-dev_2.31-13+deb11u5_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls28-dev_3.7.1-5+deb11u3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls30_3.7.1-5+deb11u3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls-dane0_3.7.1-5+deb11u3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls-openssl27_3.7.1-5+deb11u3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutlsxx28_3.7.1-5+deb11u3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.4+dfsg1-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.4+dfsg1-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphite2/libgraphite2-3_1.3.14-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphite2/libgraphite2-dev_1.3.14-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.33-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.24-4+deb11u3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.24-4+deb11u3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk4/libgtk-4-1_4.8.3+ds-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk4/libgtk-4-dev_4.8.3+ds-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz0b_2.7.4-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.7.4-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.7.4-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.7.4-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/i/icu/libicu67_67.1-7_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/j/jbigkit/libjbig-dev_2.1-3.1+b2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.6.2-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/keyutils/libkeyutils1_1.6.1-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/krb5-multidev_1.18.3-6+deb11u3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6+deb11u3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libgssrpc4_1.18.3-6+deb11u3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libk5crypto3_1.18.3-6+deb11u3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkadm5clnt-mit12_1.18.3-6+deb11u3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkadm5srv-mit12_1.18.3-6+deb11u3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkdb5-10_1.18.3-6+deb11u3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkrb5-3_1.18.3-6+deb11u3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkrb5-dev_1.18.3-6+deb11u3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkrb5support0_1.18.3-6+deb11u3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libb/libb2/libb2-1_0.98.1-1.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libb/libbsd/libbsd0_0.11.3-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcap2/libcap2_2.44-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcap2/libcap-dev_2.44-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2.2+b1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcloudproviders/libcloudproviders0_0.3.0-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdatrie/libdatrie1_0.2.13-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdatrie/libdatrie-dev_0.2.13-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr492+repack1-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr492+repack1-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr492+repack1-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr492+repack1-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdeflate/libdeflate0_1.10-2~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdeflate/libdeflate-dev_1.10-2~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm2_2.4.104-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.104-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-dev_2.4.104-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-etnaviv1_2.4.104-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-exynos1_2.4.104-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-freedreno1_2.4.104-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.104-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-omap1_2.4.104-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.104-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-tegra0_2.4.104-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libepoxy/libepoxy0_1.5.8-1~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.8-1~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libevdev/libevdev2_1.11.0+dfsg-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libevdev/libevdev-dev_1.11.0+dfsg-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libevent/libevent-2.1-7_2.1.12-stable-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libf/libffi/libffi7_3.3-6_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libf/libffi/libffi-dev_3.3-6_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.7-6_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.7-6_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libegl1_1.3.2-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libegl-dev_1.3.2-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgl1_1.3.2-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgl-dev_1.3.2-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgles1_1.3.2-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgles2_1.3.2-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgles-dev_1.3.2-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglvnd0_1.3.2-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglvnd-dev_1.3.2-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglx0_1.3.2-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglx-dev_1.3.2-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libopengl0_1.3.2-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgpg-error/libgpg-error0_1.38-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.38-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgudev/libgudev-1.0-0_234-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libice/libice6_1.0.10-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libidn2/libidn2-0_2.3.0-5_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libidn/libidn11_1.33-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libinput/libinput10_1.16.4-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libinput/libinput-dev_1.16.4-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.0.6-4_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_2.0.6-4_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjsoncpp/libjsoncpp24_1.9.4-4_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.9.4-4_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libm/libmd/libmd0_1.0.3-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libn/libnsl/libnsl2_1.3.0-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b10_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libo/libogg/libogg0_1.3.4-0.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libo/libogg/libogg-dev_1.3.4-0.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpciaccess/libpciaccess0_0.16-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libproxy/libproxy1v5_0.4.17-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpsl/libpsl5_0.21.0-1.2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libselinux/libselinux1_3.1-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libselinux/libselinux1-dev_3.1-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsepol/libsepol1_3.1-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsepol/libsepol1-dev_3.1-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsm/libsm6_1.2.3-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsndfile/libsndfile1_1.0.31-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.72.0-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.72.0-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libssh2/libssh2-1_1.9.0-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libthai/libthai0_0.1.28-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libthai/libthai-dev_0.1.28-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libtirpc/libtirpc3_1.3.1-1+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libtool/libltdl7_2.4.6-15_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libu/libunistring/libunistring2_0.9.10-4_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libu/libutempter/libutempter0_1.2.1-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libu/libutempter/libutempter-dev_1.2.1-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva2_2.17.0-1~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-dev_2.17.0-1~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-drm2_2.17.0-1~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-glx2_2.17.0-1~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-wayland2_2.17.0-1~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-x11-2_2.17.0-1~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libvorbis/libvorbis0a_1.3.7-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.7-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwacom/libwacom2_1.8-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebp6_0.6.1-2.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebp7_1.2.4-0.2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-6_1.7.2-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-dev_1.7.2-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-xcb1_1.7.2-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-xcb-dev_1.7.2-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxau/libxau6_1.0.9-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxau/libxau-dev_1.0.9-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb1_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb1-dev_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri2-0_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri3-0_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri3-dev_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-glx0_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-present0_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-present-dev_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-randr0_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-randr0-dev_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-render0_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-render0-dev_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shape0_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shape0-dev_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shm0_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-sync1_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-sync-dev_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xfixes0_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xfixes0-dev_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xinerama0_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xinput0_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xkb1_1.14-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.5-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.5-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcrypt/libcrypt1_4.4.18-4_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcrypt/libcrypt-dev_4.4.18-4_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxext/libxext6_1.3.3-1.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxext/libxext-dev_1.3.3-1.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxi/libxi6_1.7.10-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxi/libxi-dev_1.7.10-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxkbcommon/libxkbcommon0_1.0.3-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_1.0.3-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxkbcommon/libxkbcommon-x11-0_1.0.3-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxml2/libxml2_2.9.10+dfsg-6.7+deb11u4_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxml2/libxml2-dev_2.9.10+dfsg-6.7+deb11u4_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxshmfence/libxshmfence-dev_1.3-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxslt/libxslt1.1_1.1.34-4+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxslt/libxslt1-dev_1.1.34-4+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxss/libxss1_1.2.3-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxt/libxt6_1.2.0-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxt/libxt-dev_1.2.0-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libz/libzstd/libzstd1_1.4.8+dfsg-2.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lcms2/liblcms2-2_2.12~rc1-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lerc/liblerc4_4.0.0+ds-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/linux/linux-libc-dev_6.1.20-2~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lz4/liblz4-1_1.9.3-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lzo2/liblzo2-2_2.10-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/md4c/libmd4c0_0.4.7-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libegl1-mesa_20.3.5-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libegl1-mesa-dev_20.3.5-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgbm1_20.3.5-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgbm-dev_20.3.5-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgl1-mesa-dev_20.3.5-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgl1-mesa-glx_20.3.5-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libglapi-mesa_20.3.5-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libwayland-egl1-mesa_20.3.5-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/mesa-common-dev_20.3.5-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/minizip/libminizip1_1.1-8+b1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mtdev/libmtdev1_1.1.6-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libncurses6_6.2+20201114-2+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libncurses-dev_6.2+20201114-2+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libncursesw6_6.2+20201114-2+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libtinfo6_6.2+20201114-2+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nettle/libhogweed6_3.7.3-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nettle/libnettle8_3.7.3-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nghttp2/libnghttp2-14_1.43.0-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nspr/libnspr4_4.29-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nspr/libnspr4-dev_4.29-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nss/libnss3_3.61-1+deb11u3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nss/libnss3-dev_3.61-1+deb11u3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/openldap/libldap-2.4-2_2.4.59+dfsg-1~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/openssl/libssl1.1_1.1.1n-0+deb11u4_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/openssl/libssl-dev_1.1.1n-0+deb11u4_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/opus/libopus0_1.3.1-0.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/opus/libopus-dev_1.3.1-0.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/p11-kit/libp11-kit0_0.23.22-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pam/libpam0g_1.4.0-9+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pam/libpam0g-dev_1.4.0-9+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpango-1.0-0_1.46.2-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpango1.0-dev_1.46.2-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.46.2-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.46.2-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.46.2-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pciutils/libpci3_3.7.0-5_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pciutils/libpci-dev_3.7.0-5_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-16-0_10.36-2+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-32-0_10.36-2+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-8-0_10.36-2+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-dev_10.36-2+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-posix2_10.36-2+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre16-3_8.39-13_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre32-3_8.39-13_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre3_8.39-13_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre3-dev_8.39-13_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-13_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pipewire/libpipewire-0.3-0_0.3.65-2~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pipewire/libpipewire-0.3-dev_0.3.65-2~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pipewire/libspa-0.2-dev_0.3.65-2~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pixman/libpixman-1-0_0.40.0-1.1~deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pixman/libpixman-1-dev_0.40.0-1.1~deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pulseaudio/libpulse0_14.2-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pulseaudio/libpulse-dev_14.2-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_14.2-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6concurrent6_6.4.2+dfsg-10~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6core6_6.4.2+dfsg-10~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6dbus6_6.4.2+dfsg-10~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6gui6_6.4.2+dfsg-10~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6network6_6.4.2+dfsg-10~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6opengl6_6.4.2+dfsg-10~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6openglwidgets6_6.4.2+dfsg-10~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6printsupport6_6.4.2+dfsg-10~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6sql6_6.4.2+dfsg-10~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6test6_6.4.2+dfsg-10~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6widgets6_6.4.2+dfsg-10~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6xml6_6.4.2+dfsg-10~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/qt6-base-dev_6.4.2+dfsg-10~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/qt6-base-dev-tools_6.4.2+dfsg-10~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5concurrent5_5.15.2+dfsg-9_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5core5a_5.15.2+dfsg-9_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5dbus5_5.15.2+dfsg-9_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5gui5_5.15.2+dfsg-9_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5network5_5.15.2+dfsg-9_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5printsupport5_5.15.2+dfsg-9_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5sql5_5.15.2+dfsg-9_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5test5_5.15.2+dfsg-9_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5widgets5_5.15.2+dfsg-9_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5xml5_5.15.2+dfsg-9_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/qtbase5-dev_5.15.2+dfsg-9_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/qtbase5-dev-tools_5.15.2+dfsg-9_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/r/re2/libre2-9_20210201+dfsg-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/r/re2/libre2-dev_20210201+dfsg-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2+b2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/shared-mime-info/shared-mime-info_2.0-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/snappy/libsnappy1v5_1.1.8-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/snappy/libsnappy-dev_1.1.8-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/speech-dispatcher/libspeechd2_0.11.4-2~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.11.4-2~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/sqlite3/libsqlite3-0_3.34.1-3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libsystemd0_252.5-2~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libsystemd-dev_252.5-2~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libudev1_252.5-2~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libudev-dev_252.5-2~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-31_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiff5_4.2.0-1+deb11u4_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiff6_4.5.0-6_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiff-dev_4.2.0-1+deb11u4_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiffxx5_4.2.0-1+deb11u4_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tslib/libts0_1.22-1+b1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/unbound/libunbound8_1.17.1-2~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libblkid1_2.36.1-8+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libblkid-dev_2.36.1-8+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libmount1_2.36.1-8+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libmount-dev_2.36.1-8+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libuuid1_2.36.1-8+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/uuid-dev_2.36.1-8+deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/v/valgrind/valgrind_3.16.1-1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/v/vulkan-loader/libvulkan1_1.3.224.0-1~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/v/vulkan-loader/libvulkan-dev_1.3.224.0-1~bpo11+1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-bin_1.18.0-2~exp1.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-client0_1.18.0-2~exp1.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-cursor0_1.18.0-2~exp1.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-dev_1.18.0-2~exp1.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-egl1_1.18.0-2~exp1.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-egl-backend-dev_1.18.0-2~exp1.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-server0_1.18.0-2~exp1.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland-protocols/wayland-protocols_1.20-1_all.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-image/libxcb-image0_0.4.0-1+b3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-image/libxcb-image0-dev_0.4.0-1+b3_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-keysyms/libxcb-keysyms1_0.4.0-1+b2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util/libxcb-util1_0.4.0-1+b1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util/libxcb-util-dev_0.4.0-1+b1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0_0.3.9-1+b1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0-dev_0.3.9-1+b1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-wm/libxcb-icccm4_0.4.1-1.1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xft/libxft2_2.3.2-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xft/libxft-dev_2.3.2-2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xorgproto/x11proto-dev_2020.1-1_all.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xz-utils/liblzma5_5.2.5-2.1~deb11u1_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2+deb11u2_armhf.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-2+deb11u2_armhf.deb diff --git a/build/linux/sysroot_scripts/generated_package_lists/bullseye.i386 b/build/linux/sysroot_scripts/generated_package_lists/bullseye.i386 index 4802e40..cd354e2 100644 --- a/build/linux/sysroot_scripts/generated_package_lists/bullseye.i386 +++ b/build/linux/sysroot_scripts/generated_package_lists/bullseye.i386 @@ -1,389 +1,407 @@ -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/alsa-lib/libasound2_1.2.4-1.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/alsa-lib/libasound2-dev_1.2.4-1.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/atk1.0/libatk1.0-0_2.38.0-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/atk1.0/libatk1.0-dev_2.38.0-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.38.0-4~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.38.0-4~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.44.1-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.44.1-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/attr/libattr1_2.4.48-6_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/audit/libaudit1_3.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/avahi/libavahi-client3_0.8-5+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/avahi/libavahi-common3_0.8-5+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/bluez/libbluetooth3_5.55-3.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/bluez/libbluetooth-dev_5.55-3.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/brotli/libbrotli1_1.0.9-2+b2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/brotli/libbrotli-dev_1.0.9-2+b2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo2_1.16.0-5_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo2-dev_1.16.0-5_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-5_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-5_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/colord/libcolord2_1.4.5-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcups2_2.3.3op2-3+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcups2-dev_2.3.3op2-3+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcupsimage2_2.3.3op2-3+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcupsimage2-dev_2.3.3op2-3+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/curl/libcurl3-gnutls_7.85.0-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/curl/libcurl4-gnutls-dev_7.85.0-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.27+dfsg-2.1+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.8_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-6_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/dbus/libdbus-1-3_1.12.20-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/dbus/libdbus-1-dev_1.12.20-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/double-conversion/libdouble-conversion3_3.1.5-6.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.46.5-2~bpo11+2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/e2fsprogs/libcom-err2_1.46.5-2~bpo11+2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/elfutils/libelf1_0.187-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/elfutils/libelf-dev_0.187-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/expat/libexpat1_2.2.10-2+deb11u3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/expat/libexpat1-dev_2.2.10-2+deb11u3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/flac/libflac8_1.3.3-2+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/flac/libflac-dev_1.3.3-2+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-4.2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fontconfig/libfontconfig-dev_2.13.1-4.2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/freetype/libfreetype6_2.10.4+dfsg-1+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/freetype/libfreetype-dev_2.10.4+dfsg-1+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fribidi/libfribidi0_1.0.8-2+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fribidi/libfribidi-dev_1.0.8-2+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libasan6_10.2.1-6_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libatomic1_10.2.1-6_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libgcc-10-dev_10.2.1-6_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libgcc-s1_10.2.1-6_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libgomp1_10.2.1-6_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libitm1_10.2.1-6_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libquadmath0_10.2.1-6_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libstdc++-10-dev_10.2.1-6_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libstdc++6_10.2.1-6_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libubsan1_10.2.1-6_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-0_2.42.2+dfsg-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-dev_2.42.2+dfsg-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glib2.0/libglib2.0-0_2.66.8-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glib2.0/libglib2.0-dev_2.66.8-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glibc/libc6_2.31-13+deb11u5_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glibc/libc6-dev_2.31-13+deb11u5_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls28-dev_3.7.1-5+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls30_3.7.1-5+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls-dane0_3.7.1-5+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls-openssl27_3.7.1-5+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutlsxx28_3.7.1-5+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.4+dfsg1-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.4+dfsg1-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphite2/libgraphite2-3_1.3.14-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphite2/libgraphite2-dev_1.3.14-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.33-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.24-4+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.24-4+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk4/libgtk-4-1_4.8.1+ds-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk4/libgtk-4-dev_4.8.1+ds-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz0b_2.7.4-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.7.4-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.7.4-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.7.4-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/i/icu/libicu67_67.1-7_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/j/jbigkit/libjbig-dev_2.1-3.1+b2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.6.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/keyutils/libkeyutils1_1.6.1-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/krb5-multidev_1.18.3-6+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libgssrpc4_1.18.3-6+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libk5crypto3_1.18.3-6+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkadm5clnt-mit12_1.18.3-6+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkadm5srv-mit12_1.18.3-6+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkdb5-10_1.18.3-6+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkrb5-3_1.18.3-6+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkrb5-dev_1.18.3-6+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkrb5support0_1.18.3-6+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libb/libbsd/libbsd0_0.11.3-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcap2/libcap2_2.44-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcap2/libcap-dev_2.44-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2.2+b1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcloudproviders/libcloudproviders0_0.3.0-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdatrie/libdatrie1_0.2.13-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdatrie/libdatrie-dev_0.2.13-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr492+repack1-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr492+repack1-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr492+repack1-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr492+repack1-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdeflate/libdeflate0_1.10-2~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdeflate/libdeflate-dev_1.10-2~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm2_2.4.104-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.104-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-dev_2.4.104-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-intel1_2.4.104-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.104-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.104-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libepoxy/libepoxy0_1.5.8-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.8-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libevdev/libevdev2_1.11.0+dfsg-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libevdev/libevdev-dev_1.11.0+dfsg-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libevent/libevent-2.1-7_2.1.12-stable-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libf/libffi/libffi7_3.3-6_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libf/libffi/libffi-dev_3.3-6_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.7-6_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.7-6_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libegl1_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libegl-dev_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgl1_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgl-dev_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgles1_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgles2_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgles-dev_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglvnd0_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglvnd-dev_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglx0_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglx-dev_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libopengl0_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgpg-error/libgpg-error0_1.38-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.38-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgudev/libgudev-1.0-0_234-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libice/libice6_1.0.10-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libidn2/libidn2-0_2.3.0-5_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libidn/libidn11_1.33-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libinput/libinput10_1.16.4-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libinput/libinput-dev_1.16.4-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.0.6-4_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_2.0.6-4_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjsoncpp/libjsoncpp24_1.9.4-4_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.9.4-4_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libm/libmd/libmd0_1.0.3-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libn/libnsl/libnsl2_1.3.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b10_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libo/libogg/libogg0_1.3.4-0.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libo/libogg/libogg-dev_1.3.4-0.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpciaccess/libpciaccess0_0.16-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpsl/libpsl5_0.21.0-1.2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libselinux/libselinux1_3.1-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libselinux/libselinux1-dev_3.1-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsepol/libsepol1_3.1-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsepol/libsepol1-dev_3.1-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsm/libsm6_1.2.3-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsndfile/libsndfile1_1.0.31-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.72.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.72.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libssh2/libssh2-1_1.9.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libthai/libthai0_0.1.28-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libthai/libthai-dev_0.1.28-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libtirpc/libtirpc3_1.3.1-1+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libtool/libltdl7_2.4.6-15_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libu/libunistring/libunistring2_0.9.10-4_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libu/libutempter/libutempter0_1.2.1-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libu/libutempter/libutempter-dev_1.2.1-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva2_2.14.0-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-dev_2.14.0-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-drm2_2.14.0-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-glx2_2.14.0-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-wayland2_2.14.0-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-x11-2_2.14.0-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libvorbis/libvorbis0a_1.3.7-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.7-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwacom/libwacom2_1.8-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebp6_0.6.1-2.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-6_1.7.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-dev_1.7.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-xcb1_1.7.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-xcb-dev_1.7.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxau/libxau6_1.0.9-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxau/libxau-dev_1.0.9-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb1_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb1-dev_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri2-0_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri3-0_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri3-dev_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-glx0_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-present0_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-present-dev_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-randr0_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-randr0-dev_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-render0_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-render0-dev_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shape0_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shape0-dev_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shm0_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-sync1_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-sync-dev_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xfixes0_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xfixes0-dev_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xinerama0_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xinput0_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xkb1_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.5-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.5-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcrypt/libcrypt1_4.4.18-4_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcrypt/libcrypt-dev_4.4.18-4_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxext/libxext6_1.3.3-1.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxext/libxext-dev_1.3.3-1.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxi/libxi6_1.7.10-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxi/libxi-dev_1.7.10-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxkbcommon/libxkbcommon0_1.0.3-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_1.0.3-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxkbcommon/libxkbcommon-x11-0_1.0.3-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxml2/libxml2_2.9.10+dfsg-6.7+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxml2/libxml2-dev_2.9.10+dfsg-6.7+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxshmfence/libxshmfence-dev_1.3-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxslt/libxslt1.1_1.1.34-4+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxslt/libxslt1-dev_1.1.34-4+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxss/libxss1_1.2.3-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxt/libxt6_1.2.0-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxt/libxt-dev_1.2.0-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libz/libzstd/libzstd1_1.4.8+dfsg-2.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/lcms2/liblcms2-2_2.12~rc1-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/linux/linux-libc-dev_6.0.3-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/lz4/liblz4-1_1.9.3-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/lzo2/liblzo2-2_2.10-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/md4c/libmd4c0_0.4.7-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libegl1-mesa_20.3.5-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libegl1-mesa-dev_20.3.5-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgbm1_20.3.5-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgbm-dev_20.3.5-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgl1-mesa-dev_20.3.5-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgl1-mesa-glx_20.3.5-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libglapi-mesa_20.3.5-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libwayland-egl1-mesa_20.3.5-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/mesa-common-dev_20.3.5-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/minizip/libminizip1_1.1-8+b1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mtdev/libmtdev1_1.1.6-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libncurses6_6.2+20201114-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libncurses-dev_6.2+20201114-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libncursesw6_6.2+20201114-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libtinfo6_6.2+20201114-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nettle/libhogweed6_3.7.3-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nettle/libnettle8_3.7.3-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nghttp2/libnghttp2-14_1.43.0-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nspr/libnspr4_4.29-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nspr/libnspr4-dev_4.29-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nss/libnss3_3.61-1+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nss/libnss3-dev_3.61-1+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/openldap/libldap-2.4-2_2.4.59+dfsg-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/openssl/libssl1.1_1.1.1n-0+deb11u3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/openssl/libssl-dev_1.1.1n-0+deb11u3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/opus/libopus0_1.3.1-0.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/opus/libopus-dev_1.3.1-0.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/p11-kit/libp11-kit0_0.23.22-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pam/libpam0g_1.4.0-9+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pam/libpam0g-dev_1.4.0-9+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpango-1.0-0_1.46.2-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpango1.0-dev_1.46.2-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.46.2-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.46.2-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.46.2-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pciutils/libpci3_3.7.0-5_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pciutils/libpci-dev_3.7.0-5_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-16-0_10.36-2+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-32-0_10.36-2+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-8-0_10.36-2+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-dev_10.36-2+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-posix2_10.36-2+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre16-3_8.39-13_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre32-3_8.39-13_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre3_8.39-13_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre3-dev_8.39-13_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-13_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pipewire/libpipewire-0.3-0_0.3.58-2~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pipewire/libpipewire-0.3-dev_0.3.58-2~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pipewire/libspa-0.2-dev_0.3.58-2~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pixman/libpixman-1-0_0.40.0-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pixman/libpixman-1-dev_0.40.0-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pulseaudio/libpulse0_14.2-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pulseaudio/libpulse-dev_14.2-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_14.2-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5concurrent5_5.15.2+dfsg-9_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5core5a_5.15.2+dfsg-9_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5dbus5_5.15.2+dfsg-9_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5gui5_5.15.2+dfsg-9_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5network5_5.15.2+dfsg-9_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5printsupport5_5.15.2+dfsg-9_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5sql5_5.15.2+dfsg-9_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5test5_5.15.2+dfsg-9_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5widgets5_5.15.2+dfsg-9_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5xml5_5.15.2+dfsg-9_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/qtbase5-dev_5.15.2+dfsg-9_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/qtbase5-dev-tools_5.15.2+dfsg-9_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/r/re2/libre2-9_20210201+dfsg-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/r/re2/libre2-dev_20210201+dfsg-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2+b2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/shared-mime-info/shared-mime-info_2.0-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/snappy/libsnappy1v5_1.1.8-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/snappy/libsnappy-dev_1.1.8-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/speech-dispatcher/libspeechd2_0.11.4-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.11.4-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/sqlite3/libsqlite3-0_3.34.1-3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libsystemd0_251.3-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libsystemd-dev_251.3-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libudev1_251.3-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libudev-dev_251.3-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-31_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tiff/libtiff5_4.2.0-1+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tiff/libtiff-dev_4.2.0-1+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tiff/libtiffxx5_4.2.0-1+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/unbound/libunbound8_1.13.1-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libblkid1_2.36.1-8+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libblkid-dev_2.36.1-8+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libmount1_2.36.1-8+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libmount-dev_2.36.1-8+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libuuid1_2.36.1-8+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/uuid-dev_2.36.1-8+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/v/valgrind/valgrind_3.16.1-1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/v/vulkan-loader/libvulkan1_1.3.224.0-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/v/vulkan-loader/libvulkan-dev_1.3.224.0-1~bpo11+1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-bin_1.18.0-2~exp1.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-client0_1.18.0-2~exp1.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-cursor0_1.18.0-2~exp1.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-dev_1.18.0-2~exp1.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-egl1_1.18.0-2~exp1.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-egl-backend-dev_1.18.0-2~exp1.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-server0_1.18.0-2~exp1.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland-protocols/wayland-protocols_1.20-1_all.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-image/libxcb-image0_0.4.0-1+b3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-image/libxcb-image0-dev_0.4.0-1+b3_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-keysyms/libxcb-keysyms1_0.4.0-1+b2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util/libxcb-util1_0.4.0-1+b1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util/libxcb-util-dev_0.4.0-1+b1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0_0.3.9-1+b1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0-dev_0.3.9-1+b1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-wm/libxcb-icccm4_0.4.1-1.1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xft/libxft2_2.3.2-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xft/libxft-dev_2.3.2-2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xorgproto/x11proto-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xz-utils/liblzma5_5.2.5-2.1~deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2+deb11u2_i386.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-2+deb11u2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/alsa-lib/libasound2_1.2.4-1.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/alsa-lib/libasound2-dev_1.2.4-1.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/atk1.0/libatk1.0-0_2.38.0-1~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/atk1.0/libatk1.0-dev_2.38.0-1~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.38.0-4~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.38.0-4~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.44.1-1~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.44.1-1~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/attr/libattr1_2.4.48-6_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/audit/libaudit1_3.0-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/avahi/libavahi-client3_0.8-5+deb11u2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/avahi/libavahi-common3_0.8-5+deb11u2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/bluez/libbluetooth3_5.55-3.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/bluez/libbluetooth-dev_5.55-3.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/brotli/libbrotli1_1.0.9-2+b2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/brotli/libbrotli-dev_1.0.9-2+b2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo2_1.16.0-5_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo2-dev_1.16.0-5_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-5_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-5_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/colord/libcolord2_1.4.5-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcups2_2.3.3op2-3+deb11u2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcups2-dev_2.3.3op2-3+deb11u2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcupsimage2_2.3.3op2-3+deb11u2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcupsimage2-dev_2.3.3op2-3+deb11u2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/curl/libcurl3-gnutls_7.88.1-7~bpo11+2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/curl/libcurl4-gnutls-dev_7.88.1-7~bpo11+2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.27+dfsg-2.1+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.8_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-6_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/dbus/libdbus-1-3_1.12.24-0+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/dbus/libdbus-1-dev_1.12.24-0+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/double-conversion/libdouble-conversion3_3.1.5-6.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.46.6-1~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/e2fsprogs/libcom-err2_1.46.6-1~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/elfutils/libelf1_0.187-1~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/elfutils/libelf-dev_0.187-1~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/expat/libexpat1_2.2.10-2+deb11u5_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/expat/libexpat1-dev_2.2.10-2+deb11u5_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/flac/libflac8_1.3.3-2+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/flac/libflac-dev_1.3.3-2+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-4.2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fontconfig/libfontconfig-dev_2.13.1-4.2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/freetype/libfreetype6_2.10.4+dfsg-1+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/freetype/libfreetype-dev_2.10.4+dfsg-1+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fribidi/libfribidi0_1.0.8-2+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fribidi/libfribidi-dev_1.0.8-2+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libasan6_10.2.1-6_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libatomic1_10.2.1-6_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libgcc-10-dev_10.2.1-6_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libgcc-s1_10.2.1-6_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libgomp1_10.2.1-6_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libitm1_10.2.1-6_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libquadmath0_10.2.1-6_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libstdc++-10-dev_10.2.1-6_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libstdc++6_10.2.1-6_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libubsan1_10.2.1-6_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-0_2.42.2+dfsg-1+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-dev_2.42.2+dfsg-1+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glib2.0/libglib2.0-0_2.66.8-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glib2.0/libglib2.0-dev_2.66.8-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glibc/libc6_2.31-13+deb11u5_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glibc/libc6-dev_2.31-13+deb11u5_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls28-dev_3.7.1-5+deb11u3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls30_3.7.1-5+deb11u3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls-dane0_3.7.1-5+deb11u3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls-openssl27_3.7.1-5+deb11u3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutlsxx28_3.7.1-5+deb11u3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.4+dfsg1-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.4+dfsg1-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphite2/libgraphite2-3_1.3.14-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphite2/libgraphite2-dev_1.3.14-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.33-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.24-4+deb11u3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.24-4+deb11u3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk4/libgtk-4-1_4.8.3+ds-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk4/libgtk-4-dev_4.8.3+ds-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz0b_2.7.4-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.7.4-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.7.4-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.7.4-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/i/icu/libicu67_67.1-7_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/j/jbigkit/libjbig-dev_2.1-3.1+b2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.6.2-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/keyutils/libkeyutils1_1.6.1-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/krb5-multidev_1.18.3-6+deb11u3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6+deb11u3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libgssrpc4_1.18.3-6+deb11u3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libk5crypto3_1.18.3-6+deb11u3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkadm5clnt-mit12_1.18.3-6+deb11u3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkadm5srv-mit12_1.18.3-6+deb11u3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkdb5-10_1.18.3-6+deb11u3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkrb5-3_1.18.3-6+deb11u3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkrb5-dev_1.18.3-6+deb11u3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkrb5support0_1.18.3-6+deb11u3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libb/libb2/libb2-1_0.98.1-1.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libb/libbsd/libbsd0_0.11.3-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcap2/libcap2_2.44-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcap2/libcap-dev_2.44-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2.2+b1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcloudproviders/libcloudproviders0_0.3.0-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdatrie/libdatrie1_0.2.13-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdatrie/libdatrie-dev_0.2.13-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr492+repack1-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr492+repack1-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr492+repack1-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr492+repack1-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdeflate/libdeflate0_1.10-2~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdeflate/libdeflate-dev_1.10-2~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm2_2.4.104-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.104-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-dev_2.4.104-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-intel1_2.4.104-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.104-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.104-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libepoxy/libepoxy0_1.5.8-1~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.8-1~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libevdev/libevdev2_1.11.0+dfsg-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libevdev/libevdev-dev_1.11.0+dfsg-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libevent/libevent-2.1-7_2.1.12-stable-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libf/libffi/libffi7_3.3-6_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libf/libffi/libffi-dev_3.3-6_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.7-6_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.7-6_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libegl1_1.3.2-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libegl-dev_1.3.2-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgl1_1.3.2-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgl-dev_1.3.2-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgles1_1.3.2-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgles2_1.3.2-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgles-dev_1.3.2-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglvnd0_1.3.2-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglvnd-dev_1.3.2-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglx0_1.3.2-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglx-dev_1.3.2-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libopengl0_1.3.2-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgpg-error/libgpg-error0_1.38-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.38-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgudev/libgudev-1.0-0_234-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libice/libice6_1.0.10-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libidn2/libidn2-0_2.3.0-5_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libidn/libidn11_1.33-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libinput/libinput10_1.16.4-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libinput/libinput-dev_1.16.4-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.0.6-4_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_2.0.6-4_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjsoncpp/libjsoncpp24_1.9.4-4_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.9.4-4_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libm/libmd/libmd0_1.0.3-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libn/libnsl/libnsl2_1.3.0-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b10_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libo/libogg/libogg0_1.3.4-0.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libo/libogg/libogg-dev_1.3.4-0.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpciaccess/libpciaccess0_0.16-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libproxy/libproxy1v5_0.4.17-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpsl/libpsl5_0.21.0-1.2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libselinux/libselinux1_3.1-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libselinux/libselinux1-dev_3.1-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsepol/libsepol1_3.1-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsepol/libsepol1-dev_3.1-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsm/libsm6_1.2.3-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsndfile/libsndfile1_1.0.31-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.72.0-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.72.0-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libssh2/libssh2-1_1.9.0-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libthai/libthai0_0.1.28-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libthai/libthai-dev_0.1.28-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libtirpc/libtirpc3_1.3.1-1+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libtool/libltdl7_2.4.6-15_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libu/libunistring/libunistring2_0.9.10-4_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libu/libutempter/libutempter0_1.2.1-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libu/libutempter/libutempter-dev_1.2.1-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva2_2.17.0-1~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-dev_2.17.0-1~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-drm2_2.17.0-1~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-glx2_2.17.0-1~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-wayland2_2.17.0-1~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-x11-2_2.17.0-1~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libvorbis/libvorbis0a_1.3.7-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.7-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwacom/libwacom2_1.8-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebp6_0.6.1-2.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebp7_1.2.4-0.2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-6_1.7.2-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-dev_1.7.2-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-xcb1_1.7.2-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-xcb-dev_1.7.2-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxau/libxau6_1.0.9-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxau/libxau-dev_1.0.9-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb1_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb1-dev_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri2-0_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri3-0_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri3-dev_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-glx0_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-present0_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-present-dev_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-randr0_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-randr0-dev_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-render0_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-render0-dev_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shape0_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shape0-dev_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shm0_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-sync1_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-sync-dev_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xfixes0_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xfixes0-dev_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xinerama0_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xinput0_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xkb1_1.14-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.5-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.5-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcrypt/libcrypt1_4.4.18-4_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcrypt/libcrypt-dev_4.4.18-4_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxext/libxext6_1.3.3-1.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxext/libxext-dev_1.3.3-1.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxi/libxi6_1.7.10-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxi/libxi-dev_1.7.10-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxkbcommon/libxkbcommon0_1.0.3-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_1.0.3-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxkbcommon/libxkbcommon-x11-0_1.0.3-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxml2/libxml2_2.9.10+dfsg-6.7+deb11u4_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxml2/libxml2-dev_2.9.10+dfsg-6.7+deb11u4_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxshmfence/libxshmfence-dev_1.3-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxslt/libxslt1.1_1.1.34-4+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxslt/libxslt1-dev_1.1.34-4+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxss/libxss1_1.2.3-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxt/libxt6_1.2.0-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxt/libxt-dev_1.2.0-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libz/libzstd/libzstd1_1.4.8+dfsg-2.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lcms2/liblcms2-2_2.12~rc1-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lerc/liblerc4_4.0.0+ds-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/linux/linux-libc-dev_6.1.20-2~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lz4/liblz4-1_1.9.3-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lzo2/liblzo2-2_2.10-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/md4c/libmd4c0_0.4.7-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libegl1-mesa_20.3.5-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libegl1-mesa-dev_20.3.5-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgbm1_20.3.5-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgbm-dev_20.3.5-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgl1-mesa-dev_20.3.5-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgl1-mesa-glx_20.3.5-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libglapi-mesa_20.3.5-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libwayland-egl1-mesa_20.3.5-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/mesa-common-dev_20.3.5-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/minizip/libminizip1_1.1-8+b1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mtdev/libmtdev1_1.1.6-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libncurses6_6.2+20201114-2+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libncurses-dev_6.2+20201114-2+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libncursesw6_6.2+20201114-2+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libtinfo6_6.2+20201114-2+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nettle/libhogweed6_3.7.3-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nettle/libnettle8_3.7.3-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nghttp2/libnghttp2-14_1.43.0-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nspr/libnspr4_4.29-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nspr/libnspr4-dev_4.29-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nss/libnss3_3.61-1+deb11u3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nss/libnss3-dev_3.61-1+deb11u3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/openldap/libldap-2.4-2_2.4.59+dfsg-1~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/openssl/libssl1.1_1.1.1n-0+deb11u4_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/openssl/libssl-dev_1.1.1n-0+deb11u4_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/opus/libopus0_1.3.1-0.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/opus/libopus-dev_1.3.1-0.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/p11-kit/libp11-kit0_0.23.22-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pam/libpam0g_1.4.0-9+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pam/libpam0g-dev_1.4.0-9+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpango-1.0-0_1.46.2-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpango1.0-dev_1.46.2-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.46.2-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.46.2-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.46.2-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pciutils/libpci3_3.7.0-5_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pciutils/libpci-dev_3.7.0-5_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-16-0_10.36-2+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-32-0_10.36-2+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-8-0_10.36-2+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-dev_10.36-2+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-posix2_10.36-2+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre16-3_8.39-13_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre32-3_8.39-13_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre3_8.39-13_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre3-dev_8.39-13_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-13_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pipewire/libpipewire-0.3-0_0.3.65-2~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pipewire/libpipewire-0.3-dev_0.3.65-2~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pipewire/libspa-0.2-dev_0.3.65-2~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pixman/libpixman-1-0_0.40.0-1.1~deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pixman/libpixman-1-dev_0.40.0-1.1~deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pulseaudio/libpulse0_14.2-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pulseaudio/libpulse-dev_14.2-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_14.2-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6concurrent6_6.4.2+dfsg-10~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6core6_6.4.2+dfsg-10~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6dbus6_6.4.2+dfsg-10~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6gui6_6.4.2+dfsg-10~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6network6_6.4.2+dfsg-10~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6opengl6_6.4.2+dfsg-10~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6openglwidgets6_6.4.2+dfsg-10~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6printsupport6_6.4.2+dfsg-10~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6sql6_6.4.2+dfsg-10~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6test6_6.4.2+dfsg-10~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6widgets6_6.4.2+dfsg-10~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6xml6_6.4.2+dfsg-10~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/qt6-base-dev_6.4.2+dfsg-10~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/qt6-base-dev-tools_6.4.2+dfsg-10~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5concurrent5_5.15.2+dfsg-9_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5core5a_5.15.2+dfsg-9_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5dbus5_5.15.2+dfsg-9_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5gui5_5.15.2+dfsg-9_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5network5_5.15.2+dfsg-9_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5printsupport5_5.15.2+dfsg-9_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5sql5_5.15.2+dfsg-9_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5test5_5.15.2+dfsg-9_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5widgets5_5.15.2+dfsg-9_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5xml5_5.15.2+dfsg-9_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/qtbase5-dev_5.15.2+dfsg-9_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/qtbase5-dev-tools_5.15.2+dfsg-9_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/r/re2/libre2-9_20210201+dfsg-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/r/re2/libre2-dev_20210201+dfsg-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2+b2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/shared-mime-info/shared-mime-info_2.0-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/snappy/libsnappy1v5_1.1.8-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/snappy/libsnappy-dev_1.1.8-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/speech-dispatcher/libspeechd2_0.11.4-2~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.11.4-2~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/sqlite3/libsqlite3-0_3.34.1-3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libsystemd0_252.5-2~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libsystemd-dev_252.5-2~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libudev1_252.5-2~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libudev-dev_252.5-2~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-31_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiff5_4.2.0-1+deb11u4_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiff6_4.5.0-6_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiff-dev_4.2.0-1+deb11u4_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiffxx5_4.2.0-1+deb11u4_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tslib/libts0_1.22-1+b1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/unbound/libunbound8_1.17.1-2~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libblkid1_2.36.1-8+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libblkid-dev_2.36.1-8+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libmount1_2.36.1-8+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libmount-dev_2.36.1-8+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libuuid1_2.36.1-8+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/uuid-dev_2.36.1-8+deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/v/valgrind/valgrind_3.16.1-1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/v/vulkan-loader/libvulkan1_1.3.224.0-1~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/v/vulkan-loader/libvulkan-dev_1.3.224.0-1~bpo11+1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-bin_1.18.0-2~exp1.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-client0_1.18.0-2~exp1.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-cursor0_1.18.0-2~exp1.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-dev_1.18.0-2~exp1.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-egl1_1.18.0-2~exp1.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-egl-backend-dev_1.18.0-2~exp1.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-server0_1.18.0-2~exp1.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland-protocols/wayland-protocols_1.20-1_all.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-image/libxcb-image0_0.4.0-1+b3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-image/libxcb-image0-dev_0.4.0-1+b3_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-keysyms/libxcb-keysyms1_0.4.0-1+b2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util/libxcb-util1_0.4.0-1+b1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util/libxcb-util-dev_0.4.0-1+b1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0_0.3.9-1+b1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0-dev_0.3.9-1+b1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-wm/libxcb-icccm4_0.4.1-1.1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xft/libxft2_2.3.2-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xft/libxft-dev_2.3.2-2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xorgproto/x11proto-dev_2020.1-1_all.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xz-utils/liblzma5_5.2.5-2.1~deb11u1_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2+deb11u2_i386.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-2+deb11u2_i386.deb diff --git a/build/linux/sysroot_scripts/generated_package_lists/bullseye.mips64el b/build/linux/sysroot_scripts/generated_package_lists/bullseye.mips64el index 39f6e39..78e5909 100644 --- a/build/linux/sysroot_scripts/generated_package_lists/bullseye.mips64el +++ b/build/linux/sysroot_scripts/generated_package_lists/bullseye.mips64el @@ -1,384 +1,402 @@ -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/alsa-lib/libasound2_1.2.4-1.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/alsa-lib/libasound2-dev_1.2.4-1.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/atk1.0/libatk1.0-0_2.38.0-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/atk1.0/libatk1.0-dev_2.38.0-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.38.0-4~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.38.0-4~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.44.1-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.44.1-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/attr/libattr1_2.4.48-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/audit/libaudit1_3.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/avahi/libavahi-client3_0.8-5+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/avahi/libavahi-common3_0.8-5+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/bluez/libbluetooth3_5.55-3.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/bluez/libbluetooth-dev_5.55-3.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/brotli/libbrotli1_1.0.9-2+b2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/brotli/libbrotli-dev_1.0.9-2+b2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo2_1.16.0-5_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo2-dev_1.16.0-5_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-5_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-5_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/colord/libcolord2_1.4.5-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcups2_2.3.3op2-3+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcups2-dev_2.3.3op2-3+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcupsimage2_2.3.3op2-3+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcupsimage2-dev_2.3.3op2-3+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/curl/libcurl3-gnutls_7.85.0-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/curl/libcurl4-gnutls-dev_7.85.0-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.27+dfsg-2.1+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.8_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/dbus/libdbus-1-3_1.12.20-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/dbus/libdbus-1-dev_1.12.20-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/double-conversion/libdouble-conversion3_3.1.5-6.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.46.5-2~bpo11+2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/e2fsprogs/libcom-err2_1.46.5-2~bpo11+2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/elfutils/libelf1_0.187-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/elfutils/libelf-dev_0.187-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/expat/libexpat1_2.2.10-2+deb11u3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/expat/libexpat1-dev_2.2.10-2+deb11u3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/flac/libflac8_1.3.3-2+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/flac/libflac-dev_1.3.3-2+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-4.2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fontconfig/libfontconfig-dev_2.13.1-4.2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/freetype/libfreetype6_2.10.4+dfsg-1+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/freetype/libfreetype-dev_2.10.4+dfsg-1+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fribidi/libfribidi0_1.0.8-2+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fribidi/libfribidi-dev_1.0.8-2+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libatomic1_10.2.1-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libgcc-10-dev_10.2.1-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libgcc-s1_10.2.1-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libgomp1_10.2.1-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libstdc++-10-dev_10.2.1-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libstdc++6_10.2.1-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-0_2.42.2+dfsg-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-dev_2.42.2+dfsg-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glib2.0/libglib2.0-0_2.66.8-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glib2.0/libglib2.0-dev_2.66.8-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glibc/libc6_2.31-13+deb11u5_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glibc/libc6-dev_2.31-13+deb11u5_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls28-dev_3.7.1-5+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls30_3.7.1-5+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls-dane0_3.7.1-5+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls-openssl27_3.7.1-5+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutlsxx28_3.7.1-5+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.4+dfsg1-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.4+dfsg1-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphite2/libgraphite2-3_1.3.14-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphite2/libgraphite2-dev_1.3.14-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.33-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.24-4+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.24-4+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk4/libgtk-4-1_4.8.1+ds-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk4/libgtk-4-dev_4.8.1+ds-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz0b_2.7.4-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.7.4-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.7.4-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.7.4-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/i/icu/libicu67_67.1-7_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/j/jbigkit/libjbig-dev_2.1-3.1+b2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.6.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/keyutils/libkeyutils1_1.6.1-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/krb5-multidev_1.18.3-6+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libgssrpc4_1.18.3-6+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libk5crypto3_1.18.3-6+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkadm5clnt-mit12_1.18.3-6+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkadm5srv-mit12_1.18.3-6+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkdb5-10_1.18.3-6+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkrb5-3_1.18.3-6+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkrb5-dev_1.18.3-6+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkrb5support0_1.18.3-6+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libb/libbsd/libbsd0_0.11.3-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcap2/libcap2_2.44-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcap2/libcap-dev_2.44-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2.2+b1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcloudproviders/libcloudproviders0_0.3.0-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdatrie/libdatrie1_0.2.13-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdatrie/libdatrie-dev_0.2.13-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr492+repack1-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr492+repack1-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr492+repack1-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr492+repack1-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdeflate/libdeflate0_1.10-2~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdeflate/libdeflate-dev_1.10-2~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm2_2.4.104-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.104-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-dev_2.4.104-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.104-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.104-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libepoxy/libepoxy0_1.5.8-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.8-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libevdev/libevdev2_1.11.0+dfsg-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libevdev/libevdev-dev_1.11.0+dfsg-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libevent/libevent-2.1-7_2.1.12-stable-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libf/libffi/libffi7_3.3-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libf/libffi/libffi-dev_3.3-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.7-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.7-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libegl1_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libegl-dev_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgl1_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgl-dev_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgles1_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgles2_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgles-dev_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglvnd0_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglvnd-dev_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglx0_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglx-dev_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libopengl0_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgpg-error/libgpg-error0_1.38-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.38-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgudev/libgudev-1.0-0_234-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libice/libice6_1.0.10-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libidn2/libidn2-0_2.3.0-5_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libidn/libidn11_1.33-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libinput/libinput10_1.16.4-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libinput/libinput-dev_1.16.4-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.0.6-4_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_2.0.6-4_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjsoncpp/libjsoncpp24_1.9.4-4_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.9.4-4_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libm/libmd/libmd0_1.0.3-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libn/libnsl/libnsl2_1.3.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b10_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libo/libogg/libogg0_1.3.4-0.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libo/libogg/libogg-dev_1.3.4-0.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpciaccess/libpciaccess0_0.16-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpsl/libpsl5_0.21.0-1.2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libselinux/libselinux1_3.1-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libselinux/libselinux1-dev_3.1-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsepol/libsepol1_3.1-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsepol/libsepol1-dev_3.1-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsm/libsm6_1.2.3-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsndfile/libsndfile1_1.0.31-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.72.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.72.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libssh2/libssh2-1_1.9.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libthai/libthai0_0.1.28-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libthai/libthai-dev_0.1.28-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libtirpc/libtirpc3_1.3.1-1+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libtool/libltdl7_2.4.6-15_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libu/libunistring/libunistring2_0.9.10-4_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libu/libutempter/libutempter0_1.2.1-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libu/libutempter/libutempter-dev_1.2.1-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva2_2.14.0-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-dev_2.14.0-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-drm2_2.14.0-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-glx2_2.14.0-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-wayland2_2.14.0-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-x11-2_2.14.0-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libvorbis/libvorbis0a_1.3.7-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.7-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwacom/libwacom2_1.8-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebp6_0.6.1-2.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-6_1.7.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-dev_1.7.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-xcb1_1.7.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-xcb-dev_1.7.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxau/libxau6_1.0.9-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxau/libxau-dev_1.0.9-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb1_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb1-dev_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri2-0_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri3-0_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri3-dev_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-glx0_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-present0_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-present-dev_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-randr0_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-randr0-dev_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-render0_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-render0-dev_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shape0_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shape0-dev_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shm0_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-sync1_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-sync-dev_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xfixes0_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xfixes0-dev_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xinerama0_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xinput0_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xkb1_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.5-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.5-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcrypt/libcrypt1_4.4.18-4_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcrypt/libcrypt-dev_4.4.18-4_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxext/libxext6_1.3.3-1.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxext/libxext-dev_1.3.3-1.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxi/libxi6_1.7.10-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxi/libxi-dev_1.7.10-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxkbcommon/libxkbcommon0_1.0.3-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_1.0.3-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxkbcommon/libxkbcommon-x11-0_1.0.3-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxml2/libxml2_2.9.10+dfsg-6.7+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxml2/libxml2-dev_2.9.10+dfsg-6.7+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxshmfence/libxshmfence-dev_1.3-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxslt/libxslt1.1_1.1.34-4+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxslt/libxslt1-dev_1.1.34-4+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxss/libxss1_1.2.3-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxt/libxt6_1.2.0-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxt/libxt-dev_1.2.0-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libz/libzstd/libzstd1_1.4.8+dfsg-2.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/lcms2/liblcms2-2_2.12~rc1-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/linux/linux-libc-dev_5.19.11-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/lz4/liblz4-1_1.9.3-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/lzo2/liblzo2-2_2.10-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/md4c/libmd4c0_0.4.7-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libegl1-mesa_20.3.5-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libegl1-mesa-dev_20.3.5-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgbm1_20.3.5-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgbm-dev_20.3.5-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgl1-mesa-dev_20.3.5-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgl1-mesa-glx_20.3.5-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libglapi-mesa_20.3.5-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libwayland-egl1-mesa_20.3.5-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/mesa-common-dev_20.3.5-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/minizip/libminizip1_1.1-8+b1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mtdev/libmtdev1_1.1.6-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libncurses6_6.2+20201114-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libncurses-dev_6.2+20201114-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libncursesw6_6.2+20201114-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libtinfo6_6.2+20201114-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nettle/libhogweed6_3.7.3-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nettle/libnettle8_3.7.3-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nghttp2/libnghttp2-14_1.43.0-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nspr/libnspr4_4.29-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nspr/libnspr4-dev_4.29-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nss/libnss3_3.61-1+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nss/libnss3-dev_3.61-1+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/openldap/libldap-2.4-2_2.4.59+dfsg-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/openssl/libssl1.1_1.1.1n-0+deb11u3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/openssl/libssl-dev_1.1.1n-0+deb11u3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/opus/libopus0_1.3.1-0.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/opus/libopus-dev_1.3.1-0.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/p11-kit/libp11-kit0_0.23.22-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pam/libpam0g_1.4.0-9+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pam/libpam0g-dev_1.4.0-9+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpango-1.0-0_1.46.2-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpango1.0-dev_1.46.2-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.46.2-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.46.2-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.46.2-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pciutils/libpci3_3.7.0-5_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pciutils/libpci-dev_3.7.0-5_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-16-0_10.36-2+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-32-0_10.36-2+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-8-0_10.36-2+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-dev_10.36-2+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-posix2_10.36-2+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre16-3_8.39-13_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre32-3_8.39-13_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre3_8.39-13_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre3-dev_8.39-13_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-13_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pipewire/libpipewire-0.3-0_0.3.58-2~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pipewire/libpipewire-0.3-dev_0.3.58-2~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pipewire/libspa-0.2-dev_0.3.58-2~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pixman/libpixman-1-0_0.40.0-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pixman/libpixman-1-dev_0.40.0-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pulseaudio/libpulse0_14.2-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pulseaudio/libpulse-dev_14.2-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_14.2-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5concurrent5_5.15.2+dfsg-9_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5core5a_5.15.2+dfsg-9_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5dbus5_5.15.2+dfsg-9_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5gui5_5.15.2+dfsg-9_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5network5_5.15.2+dfsg-9_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5printsupport5_5.15.2+dfsg-9_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5sql5_5.15.2+dfsg-9_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5test5_5.15.2+dfsg-9_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5widgets5_5.15.2+dfsg-9_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5xml5_5.15.2+dfsg-9_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/qtbase5-dev_5.15.2+dfsg-9_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/qtbase5-dev-tools_5.15.2+dfsg-9_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/r/re2/libre2-9_20210201+dfsg-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/r/re2/libre2-dev_20210201+dfsg-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2+b2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/shared-mime-info/shared-mime-info_2.0-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/snappy/libsnappy1v5_1.1.8-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/snappy/libsnappy-dev_1.1.8-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/speech-dispatcher/libspeechd2_0.11.4-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.11.4-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/sqlite3/libsqlite3-0_3.34.1-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libsystemd0_251.3-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libsystemd-dev_251.3-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libudev1_251.3-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libudev-dev_251.3-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-31_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tiff/libtiff5_4.2.0-1+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tiff/libtiff-dev_4.2.0-1+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tiff/libtiffxx5_4.2.0-1+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/unbound/libunbound8_1.13.1-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libblkid1_2.36.1-8+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libblkid-dev_2.36.1-8+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libmount1_2.36.1-8+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libmount-dev_2.36.1-8+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libuuid1_2.36.1-8+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/uuid-dev_2.36.1-8+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/v/valgrind/valgrind_3.16.1-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/v/vulkan-loader/libvulkan1_1.3.224.0-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/v/vulkan-loader/libvulkan-dev_1.3.224.0-1~bpo11+1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-bin_1.18.0-2~exp1.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-client0_1.18.0-2~exp1.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-cursor0_1.18.0-2~exp1.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-dev_1.18.0-2~exp1.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-egl1_1.18.0-2~exp1.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-egl-backend-dev_1.18.0-2~exp1.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-server0_1.18.0-2~exp1.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland-protocols/wayland-protocols_1.20-1_all.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-image/libxcb-image0_0.4.0-1+b3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-image/libxcb-image0-dev_0.4.0-1+b3_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-keysyms/libxcb-keysyms1_0.4.0-1+b2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util/libxcb-util1_0.4.0-1+b1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util/libxcb-util-dev_0.4.0-1+b1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0_0.3.9-1+b1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0-dev_0.3.9-1+b1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-wm/libxcb-icccm4_0.4.1-1.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xft/libxft2_2.3.2-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xft/libxft-dev_2.3.2-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xorgproto/x11proto-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xz-utils/liblzma5_5.2.5-2.1~deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2+deb11u2_mips64el.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-2+deb11u2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/alsa-lib/libasound2_1.2.4-1.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/alsa-lib/libasound2-dev_1.2.4-1.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/atk1.0/libatk1.0-0_2.38.0-1~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/atk1.0/libatk1.0-dev_2.38.0-1~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.38.0-4~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.38.0-4~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.44.1-1~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.44.1-1~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/attr/libattr1_2.4.48-6_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/audit/libaudit1_3.0-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/avahi/libavahi-client3_0.8-5+deb11u2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/avahi/libavahi-common3_0.8-5+deb11u2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/bluez/libbluetooth3_5.55-3.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/bluez/libbluetooth-dev_5.55-3.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/brotli/libbrotli1_1.0.9-2+b2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/brotli/libbrotli-dev_1.0.9-2+b2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo2_1.16.0-5_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo2-dev_1.16.0-5_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-5_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-5_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/colord/libcolord2_1.4.5-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcups2_2.3.3op2-3+deb11u2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcups2-dev_2.3.3op2-3+deb11u2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcupsimage2_2.3.3op2-3+deb11u2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcupsimage2-dev_2.3.3op2-3+deb11u2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/curl/libcurl3-gnutls_7.88.1-7~bpo11+2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/curl/libcurl4-gnutls-dev_7.88.1-7~bpo11+2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.27+dfsg-2.1+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.8_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-6_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/dbus/libdbus-1-3_1.12.24-0+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/dbus/libdbus-1-dev_1.12.24-0+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/double-conversion/libdouble-conversion3_3.1.5-6.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.46.6-1~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/e2fsprogs/libcom-err2_1.46.6-1~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/elfutils/libelf1_0.187-1~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/elfutils/libelf-dev_0.187-1~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/expat/libexpat1_2.2.10-2+deb11u5_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/expat/libexpat1-dev_2.2.10-2+deb11u5_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/flac/libflac8_1.3.3-2+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/flac/libflac-dev_1.3.3-2+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-4.2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fontconfig/libfontconfig-dev_2.13.1-4.2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/freetype/libfreetype6_2.10.4+dfsg-1+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/freetype/libfreetype-dev_2.10.4+dfsg-1+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fribidi/libfribidi0_1.0.8-2+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fribidi/libfribidi-dev_1.0.8-2+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libatomic1_10.2.1-6_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libgcc-10-dev_10.2.1-6_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libgcc-s1_10.2.1-6_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libgomp1_10.2.1-6_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libstdc++-10-dev_10.2.1-6_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libstdc++6_10.2.1-6_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-0_2.42.2+dfsg-1+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-dev_2.42.2+dfsg-1+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glib2.0/libglib2.0-0_2.66.8-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glib2.0/libglib2.0-dev_2.66.8-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glibc/libc6_2.31-13+deb11u5_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glibc/libc6-dev_2.31-13+deb11u5_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls28-dev_3.7.1-5+deb11u3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls30_3.7.1-5+deb11u3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls-dane0_3.7.1-5+deb11u3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls-openssl27_3.7.1-5+deb11u3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutlsxx28_3.7.1-5+deb11u3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.4+dfsg1-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.4+dfsg1-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphite2/libgraphite2-3_1.3.14-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphite2/libgraphite2-dev_1.3.14-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.33-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.24-4+deb11u3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.24-4+deb11u3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk4/libgtk-4-1_4.8.3+ds-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk4/libgtk-4-dev_4.8.3+ds-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz0b_2.7.4-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.7.4-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.7.4-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.7.4-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/i/icu/libicu67_67.1-7_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/j/jbigkit/libjbig-dev_2.1-3.1+b2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.6.2-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/keyutils/libkeyutils1_1.6.1-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/krb5-multidev_1.18.3-6+deb11u3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6+deb11u3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libgssrpc4_1.18.3-6+deb11u3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libk5crypto3_1.18.3-6+deb11u3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkadm5clnt-mit12_1.18.3-6+deb11u3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkadm5srv-mit12_1.18.3-6+deb11u3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkdb5-10_1.18.3-6+deb11u3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkrb5-3_1.18.3-6+deb11u3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkrb5-dev_1.18.3-6+deb11u3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkrb5support0_1.18.3-6+deb11u3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libb/libb2/libb2-1_0.98.1-1.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libb/libbsd/libbsd0_0.11.3-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcap2/libcap2_2.44-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcap2/libcap-dev_2.44-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2.2+b1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcloudproviders/libcloudproviders0_0.3.0-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdatrie/libdatrie1_0.2.13-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdatrie/libdatrie-dev_0.2.13-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr492+repack1-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr492+repack1-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr492+repack1-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr492+repack1-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdeflate/libdeflate0_1.10-2~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdeflate/libdeflate-dev_1.10-2~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm2_2.4.104-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.104-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-dev_2.4.104-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.104-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.104-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libepoxy/libepoxy0_1.5.8-1~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.8-1~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libevdev/libevdev2_1.11.0+dfsg-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libevdev/libevdev-dev_1.11.0+dfsg-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libevent/libevent-2.1-7_2.1.12-stable-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libf/libffi/libffi7_3.3-6_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libf/libffi/libffi-dev_3.3-6_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.7-6_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.7-6_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libegl1_1.3.2-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libegl-dev_1.3.2-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgl1_1.3.2-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgl-dev_1.3.2-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgles1_1.3.2-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgles2_1.3.2-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgles-dev_1.3.2-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglvnd0_1.3.2-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglvnd-dev_1.3.2-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglx0_1.3.2-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglx-dev_1.3.2-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libopengl0_1.3.2-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgpg-error/libgpg-error0_1.38-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.38-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgudev/libgudev-1.0-0_234-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libice/libice6_1.0.10-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libidn2/libidn2-0_2.3.0-5_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libidn/libidn11_1.33-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libinput/libinput10_1.16.4-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libinput/libinput-dev_1.16.4-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.0.6-4_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_2.0.6-4_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjsoncpp/libjsoncpp24_1.9.4-4_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.9.4-4_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libm/libmd/libmd0_1.0.3-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libn/libnsl/libnsl2_1.3.0-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b10_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libo/libogg/libogg0_1.3.4-0.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libo/libogg/libogg-dev_1.3.4-0.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpciaccess/libpciaccess0_0.16-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libproxy/libproxy1v5_0.4.17-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpsl/libpsl5_0.21.0-1.2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libselinux/libselinux1_3.1-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libselinux/libselinux1-dev_3.1-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsepol/libsepol1_3.1-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsepol/libsepol1-dev_3.1-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsm/libsm6_1.2.3-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsndfile/libsndfile1_1.0.31-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.72.0-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.72.0-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libssh2/libssh2-1_1.9.0-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libthai/libthai0_0.1.28-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libthai/libthai-dev_0.1.28-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libtirpc/libtirpc3_1.3.1-1+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libtool/libltdl7_2.4.6-15_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libu/libunistring/libunistring2_0.9.10-4_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libu/libutempter/libutempter0_1.2.1-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libu/libutempter/libutempter-dev_1.2.1-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva2_2.17.0-1~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-dev_2.17.0-1~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-drm2_2.17.0-1~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-glx2_2.17.0-1~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-wayland2_2.17.0-1~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-x11-2_2.17.0-1~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libvorbis/libvorbis0a_1.3.7-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.7-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwacom/libwacom2_1.8-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebp6_0.6.1-2.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebp7_1.2.4-0.2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-6_1.7.2-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-dev_1.7.2-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-xcb1_1.7.2-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-xcb-dev_1.7.2-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxau/libxau6_1.0.9-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxau/libxau-dev_1.0.9-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb1_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb1-dev_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri2-0_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri3-0_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri3-dev_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-glx0_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-present0_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-present-dev_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-randr0_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-randr0-dev_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-render0_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-render0-dev_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shape0_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shape0-dev_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shm0_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-sync1_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-sync-dev_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xfixes0_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xfixes0-dev_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xinerama0_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xinput0_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xkb1_1.14-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.5-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.5-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcrypt/libcrypt1_4.4.18-4_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcrypt/libcrypt-dev_4.4.18-4_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxext/libxext6_1.3.3-1.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxext/libxext-dev_1.3.3-1.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxi/libxi6_1.7.10-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxi/libxi-dev_1.7.10-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxkbcommon/libxkbcommon0_1.0.3-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_1.0.3-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxkbcommon/libxkbcommon-x11-0_1.0.3-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxml2/libxml2_2.9.10+dfsg-6.7+deb11u4_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxml2/libxml2-dev_2.9.10+dfsg-6.7+deb11u4_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxshmfence/libxshmfence-dev_1.3-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxslt/libxslt1.1_1.1.34-4+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxslt/libxslt1-dev_1.1.34-4+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxss/libxss1_1.2.3-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxt/libxt6_1.2.0-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxt/libxt-dev_1.2.0-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libz/libzstd/libzstd1_1.4.8+dfsg-2.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lcms2/liblcms2-2_2.12~rc1-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lerc/liblerc4_4.0.0+ds-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/linux/linux-libc-dev_5.19.11-1~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lz4/liblz4-1_1.9.3-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lzo2/liblzo2-2_2.10-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/md4c/libmd4c0_0.4.7-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libegl1-mesa_20.3.5-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libegl1-mesa-dev_20.3.5-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgbm1_20.3.5-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgbm-dev_20.3.5-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgl1-mesa-dev_20.3.5-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgl1-mesa-glx_20.3.5-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libglapi-mesa_20.3.5-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libwayland-egl1-mesa_20.3.5-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/mesa-common-dev_20.3.5-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/minizip/libminizip1_1.1-8+b1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mtdev/libmtdev1_1.1.6-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libncurses6_6.2+20201114-2+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libncurses-dev_6.2+20201114-2+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libncursesw6_6.2+20201114-2+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libtinfo6_6.2+20201114-2+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nettle/libhogweed6_3.7.3-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nettle/libnettle8_3.7.3-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nghttp2/libnghttp2-14_1.43.0-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nspr/libnspr4_4.29-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nspr/libnspr4-dev_4.29-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nss/libnss3_3.61-1+deb11u3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nss/libnss3-dev_3.61-1+deb11u3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/openldap/libldap-2.4-2_2.4.59+dfsg-1~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/openssl/libssl1.1_1.1.1n-0+deb11u4_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/openssl/libssl-dev_1.1.1n-0+deb11u4_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/opus/libopus0_1.3.1-0.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/opus/libopus-dev_1.3.1-0.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/p11-kit/libp11-kit0_0.23.22-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pam/libpam0g_1.4.0-9+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pam/libpam0g-dev_1.4.0-9+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpango-1.0-0_1.46.2-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpango1.0-dev_1.46.2-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.46.2-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.46.2-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.46.2-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pciutils/libpci3_3.7.0-5_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pciutils/libpci-dev_3.7.0-5_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-16-0_10.36-2+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-32-0_10.36-2+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-8-0_10.36-2+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-dev_10.36-2+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-posix2_10.36-2+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre16-3_8.39-13_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre32-3_8.39-13_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre3_8.39-13_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre3-dev_8.39-13_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-13_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pipewire/libpipewire-0.3-0_0.3.65-2~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pipewire/libpipewire-0.3-dev_0.3.65-2~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pipewire/libspa-0.2-dev_0.3.65-2~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pixman/libpixman-1-0_0.40.0-1.1~deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pixman/libpixman-1-dev_0.40.0-1.1~deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pulseaudio/libpulse0_14.2-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pulseaudio/libpulse-dev_14.2-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_14.2-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6concurrent6_6.4.2+dfsg-10~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6core6_6.4.2+dfsg-10~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6dbus6_6.4.2+dfsg-10~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6gui6_6.4.2+dfsg-10~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6network6_6.4.2+dfsg-10~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6opengl6_6.4.2+dfsg-10~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6openglwidgets6_6.4.2+dfsg-10~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6printsupport6_6.4.2+dfsg-10~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6sql6_6.4.2+dfsg-10~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6test6_6.4.2+dfsg-10~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6widgets6_6.4.2+dfsg-10~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6xml6_6.4.2+dfsg-10~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/qt6-base-dev_6.4.2+dfsg-10~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/qt6-base-dev-tools_6.4.2+dfsg-10~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5concurrent5_5.15.2+dfsg-9_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5core5a_5.15.2+dfsg-9_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5dbus5_5.15.2+dfsg-9_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5gui5_5.15.2+dfsg-9_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5network5_5.15.2+dfsg-9_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5printsupport5_5.15.2+dfsg-9_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5sql5_5.15.2+dfsg-9_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5test5_5.15.2+dfsg-9_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5widgets5_5.15.2+dfsg-9_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5xml5_5.15.2+dfsg-9_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/qtbase5-dev_5.15.2+dfsg-9_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/qtbase5-dev-tools_5.15.2+dfsg-9_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/r/re2/libre2-9_20210201+dfsg-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/r/re2/libre2-dev_20210201+dfsg-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2+b2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/shared-mime-info/shared-mime-info_2.0-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/snappy/libsnappy1v5_1.1.8-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/snappy/libsnappy-dev_1.1.8-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/speech-dispatcher/libspeechd2_0.11.4-2~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.11.4-2~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/sqlite3/libsqlite3-0_3.34.1-3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libsystemd0_252.5-2~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libsystemd-dev_252.5-2~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libudev1_252.5-2~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libudev-dev_252.5-2~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-31_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiff5_4.2.0-1+deb11u4_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiff6_4.5.0-6_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiff-dev_4.2.0-1+deb11u4_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiffxx5_4.2.0-1+deb11u4_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tslib/libts0_1.22-1+b1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/unbound/libunbound8_1.17.1-2~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libblkid1_2.36.1-8+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libblkid-dev_2.36.1-8+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libmount1_2.36.1-8+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libmount-dev_2.36.1-8+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libuuid1_2.36.1-8+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/uuid-dev_2.36.1-8+deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/v/valgrind/valgrind_3.16.1-1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/v/vulkan-loader/libvulkan1_1.3.224.0-1~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/v/vulkan-loader/libvulkan-dev_1.3.224.0-1~bpo11+1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-bin_1.18.0-2~exp1.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-client0_1.18.0-2~exp1.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-cursor0_1.18.0-2~exp1.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-dev_1.18.0-2~exp1.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-egl1_1.18.0-2~exp1.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-egl-backend-dev_1.18.0-2~exp1.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-server0_1.18.0-2~exp1.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland-protocols/wayland-protocols_1.20-1_all.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-image/libxcb-image0_0.4.0-1+b3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-image/libxcb-image0-dev_0.4.0-1+b3_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-keysyms/libxcb-keysyms1_0.4.0-1+b2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util/libxcb-util1_0.4.0-1+b1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util/libxcb-util-dev_0.4.0-1+b1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0_0.3.9-1+b1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0-dev_0.3.9-1+b1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-wm/libxcb-icccm4_0.4.1-1.1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xft/libxft2_2.3.2-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xft/libxft-dev_2.3.2-2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xorgproto/x11proto-dev_2020.1-1_all.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xz-utils/liblzma5_5.2.5-2.1~deb11u1_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2+deb11u2_mips64el.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-2+deb11u2_mips64el.deb diff --git a/build/linux/sysroot_scripts/generated_package_lists/bullseye.mipsel b/build/linux/sysroot_scripts/generated_package_lists/bullseye.mipsel index 9027494..dc38c60 100644 --- a/build/linux/sysroot_scripts/generated_package_lists/bullseye.mipsel +++ b/build/linux/sysroot_scripts/generated_package_lists/bullseye.mipsel @@ -1,383 +1,401 @@ -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/alsa-lib/libasound2_1.2.4-1.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/alsa-lib/libasound2-dev_1.2.4-1.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/atk1.0/libatk1.0-0_2.38.0-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/atk1.0/libatk1.0-dev_2.38.0-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.38.0-4~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.38.0-4~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.44.1-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.44.1-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/attr/libattr1_2.4.48-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/audit/libaudit1_3.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/avahi/libavahi-client3_0.8-5+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/a/avahi/libavahi-common3_0.8-5+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/bluez/libbluetooth3_5.55-3.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/bluez/libbluetooth-dev_5.55-3.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/brotli/libbrotli1_1.0.9-2+b2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/b/brotli/libbrotli-dev_1.0.9-2+b2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo2_1.16.0-5_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo2-dev_1.16.0-5_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-5_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-5_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/colord/libcolord2_1.4.5-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcups2_2.3.3op2-3+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcups2-dev_2.3.3op2-3+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcupsimage2_2.3.3op2-3+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cups/libcupsimage2-dev_2.3.3op2-3+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/curl/libcurl3-gnutls_7.85.0-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/curl/libcurl4-gnutls-dev_7.85.0-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.27+dfsg-2.1+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.8_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/dbus/libdbus-1-3_1.12.20-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/dbus/libdbus-1-dev_1.12.20-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/d/double-conversion/libdouble-conversion3_3.1.5-6.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.46.5-2~bpo11+2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/e2fsprogs/libcom-err2_1.46.5-2~bpo11+2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/elfutils/libelf1_0.187-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/elfutils/libelf-dev_0.187-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/expat/libexpat1_2.2.10-2+deb11u3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/e/expat/libexpat1-dev_2.2.10-2+deb11u3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/flac/libflac8_1.3.3-2+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/flac/libflac-dev_1.3.3-2+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-4.2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fontconfig/libfontconfig-dev_2.13.1-4.2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/freetype/libfreetype6_2.10.4+dfsg-1+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/freetype/libfreetype-dev_2.10.4+dfsg-1+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fribidi/libfribidi0_1.0.8-2+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/f/fribidi/libfribidi-dev_1.0.8-2+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libatomic1_10.2.1-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libgcc-10-dev_10.2.1-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libgcc-s1_10.2.1-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libgomp1_10.2.1-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libstdc++-10-dev_10.2.1-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gcc-10/libstdc++6_10.2.1-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-0_2.42.2+dfsg-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-dev_2.42.2+dfsg-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glib2.0/libglib2.0-0_2.66.8-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glib2.0/libglib2.0-dev_2.66.8-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glibc/libc6_2.31-13+deb11u5_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/glibc/libc6-dev_2.31-13+deb11u5_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls28-dev_3.7.1-5+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls30_3.7.1-5+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls-dane0_3.7.1-5+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutls-openssl27_3.7.1-5+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gnutls28/libgnutlsxx28_3.7.1-5+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.4+dfsg1-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.4+dfsg1-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphite2/libgraphite2-3_1.3.14-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/graphite2/libgraphite2-dev_1.3.14-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.33-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.24-4+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.24-4+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk4/libgtk-4-1_4.8.1+ds-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/g/gtk4/libgtk-4-dev_4.8.1+ds-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz0b_2.7.4-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.7.4-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.7.4-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.7.4-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/i/icu/libicu67_67.1-7_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/j/jbigkit/libjbig-dev_2.1-3.1+b2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.6.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/keyutils/libkeyutils1_1.6.1-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/krb5-multidev_1.18.3-6+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libgssrpc4_1.18.3-6+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libk5crypto3_1.18.3-6+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkadm5clnt-mit12_1.18.3-6+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkadm5srv-mit12_1.18.3-6+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkdb5-10_1.18.3-6+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkrb5-3_1.18.3-6+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkrb5-dev_1.18.3-6+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/k/krb5/libkrb5support0_1.18.3-6+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libb/libbsd/libbsd0_0.11.3-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcap2/libcap2_2.44-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcap2/libcap-dev_2.44-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2.2+b1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libc/libcloudproviders/libcloudproviders0_0.3.0-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdatrie/libdatrie1_0.2.13-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdatrie/libdatrie-dev_0.2.13-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr492+repack1-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr492+repack1-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr492+repack1-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr492+repack1-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdeflate/libdeflate0_1.10-2~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdeflate/libdeflate-dev_1.10-2~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm2_2.4.104-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.104-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-dev_2.4.104-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.104-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.104-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libepoxy/libepoxy0_1.5.8-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.8-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libevdev/libevdev2_1.11.0+dfsg-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libevdev/libevdev-dev_1.11.0+dfsg-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libe/libevent/libevent-2.1-7_2.1.12-stable-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libf/libffi/libffi7_3.3-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libf/libffi/libffi-dev_3.3-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.7-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.7-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libegl1_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libegl-dev_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgl1_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgl-dev_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgles1_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgles2_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libgles-dev_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglvnd0_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglvnd-dev_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglx0_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libglx-dev_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libglvnd/libopengl0_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgpg-error/libgpg-error0_1.38-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.38-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libg/libgudev/libgudev-1.0-0_234-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libice/libice6_1.0.10-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libidn2/libidn2-0_2.3.0-5_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libidn/libidn11_1.33-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libinput/libinput10_1.16.4-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libi/libinput/libinput-dev_1.16.4-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.0.6-4_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_2.0.6-4_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjsoncpp/libjsoncpp24_1.9.4-4_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.9.4-4_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libm/libmd/libmd0_1.0.3-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libn/libnsl/libnsl2_1.3.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b10_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libo/libogg/libogg0_1.3.4-0.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libo/libogg/libogg-dev_1.3.4-0.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpciaccess/libpciaccess0_0.16-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpsl/libpsl5_0.21.0-1.2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libselinux/libselinux1_3.1-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libselinux/libselinux1-dev_3.1-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsepol/libsepol1_3.1-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsepol/libsepol1-dev_3.1-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsm/libsm6_1.2.3-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsndfile/libsndfile1_1.0.31-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.72.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.72.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libs/libssh2/libssh2-1_1.9.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libthai/libthai0_0.1.28-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libthai/libthai-dev_0.1.28-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libtirpc/libtirpc3_1.3.1-1+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libt/libtool/libltdl7_2.4.6-15_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libu/libunistring/libunistring2_0.9.10-4_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libu/libutempter/libutempter0_1.2.1-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libu/libutempter/libutempter-dev_1.2.1-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva2_2.14.0-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-dev_2.14.0-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-drm2_2.14.0-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-glx2_2.14.0-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-wayland2_2.14.0-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libva/libva-x11-2_2.14.0-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libvorbis/libvorbis0a_1.3.7-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.7-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwacom/libwacom2_1.8-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebp6_0.6.1-2.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-6_1.7.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-dev_1.7.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-xcb1_1.7.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libx11/libx11-xcb-dev_1.7.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxau/libxau6_1.0.9-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxau/libxau-dev_1.0.9-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb1_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb1-dev_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri2-0_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri3-0_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-dri3-dev_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-glx0_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-present0_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-present-dev_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-randr0_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-randr0-dev_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-render0_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-render0-dev_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shape0_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shape0-dev_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shm0_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-sync1_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-sync-dev_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xfixes0_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xfixes0-dev_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xinerama0_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xinput0_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcb/libxcb-xkb1_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.5-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.5-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcrypt/libcrypt1_4.4.18-4_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcrypt/libcrypt-dev_4.4.18-4_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxext/libxext6_1.3.3-1.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxext/libxext-dev_1.3.3-1.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxi/libxi6_1.7.10-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxi/libxi-dev_1.7.10-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxkbcommon/libxkbcommon0_1.0.3-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_1.0.3-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxkbcommon/libxkbcommon-x11-0_1.0.3-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxml2/libxml2_2.9.10+dfsg-6.7+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxml2/libxml2-dev_2.9.10+dfsg-6.7+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxshmfence/libxshmfence-dev_1.3-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxslt/libxslt1.1_1.1.34-4+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxslt/libxslt1-dev_1.1.34-4+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxss/libxss1_1.2.3-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxt/libxt6_1.2.0-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxt/libxt-dev_1.2.0-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/libz/libzstd/libzstd1_1.4.8+dfsg-2.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/lcms2/liblcms2-2_2.12~rc1-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/linux/linux-libc-dev_5.19.11-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/lz4/liblz4-1_1.9.3-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/l/lzo2/liblzo2-2_2.10-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/md4c/libmd4c0_0.4.7-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libegl1-mesa_20.3.5-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libegl1-mesa-dev_20.3.5-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgbm1_20.3.5-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgbm-dev_20.3.5-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgl1-mesa-dev_20.3.5-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libgl1-mesa-glx_20.3.5-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libglapi-mesa_20.3.5-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/libwayland-egl1-mesa_20.3.5-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mesa/mesa-common-dev_20.3.5-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/minizip/libminizip1_1.1-8+b1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/m/mtdev/libmtdev1_1.1.6-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libncurses6_6.2+20201114-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libncurses-dev_6.2+20201114-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libncursesw6_6.2+20201114-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/ncurses/libtinfo6_6.2+20201114-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nettle/libhogweed6_3.7.3-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nettle/libnettle8_3.7.3-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nghttp2/libnghttp2-14_1.43.0-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nspr/libnspr4_4.29-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nspr/libnspr4-dev_4.29-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nss/libnss3_3.61-1+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/n/nss/libnss3-dev_3.61-1+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/openldap/libldap-2.4-2_2.4.59+dfsg-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/openssl/libssl1.1_1.1.1n-0+deb11u3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/openssl/libssl-dev_1.1.1n-0+deb11u3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/opus/libopus0_1.3.1-0.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/o/opus/libopus-dev_1.3.1-0.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/p11-kit/libp11-kit0_0.23.22-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pam/libpam0g_1.4.0-9+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pam/libpam0g-dev_1.4.0-9+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpango-1.0-0_1.46.2-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpango1.0-dev_1.46.2-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.46.2-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.46.2-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.46.2-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pciutils/libpci3_3.7.0-5_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pciutils/libpci-dev_3.7.0-5_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-16-0_10.36-2+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-32-0_10.36-2+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-8-0_10.36-2+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-dev_10.36-2+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre2/libpcre2-posix2_10.36-2+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre16-3_8.39-13_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre32-3_8.39-13_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre3_8.39-13_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcre3-dev_8.39-13_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-13_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pipewire/libpipewire-0.3-0_0.3.58-2~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pipewire/libpipewire-0.3-dev_0.3.58-2~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pipewire/libspa-0.2-dev_0.3.58-2~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pixman/libpixman-1-0_0.40.0-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pixman/libpixman-1-dev_0.40.0-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pulseaudio/libpulse0_14.2-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pulseaudio/libpulse-dev_14.2-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_14.2-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5concurrent5_5.15.2+dfsg-9_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5core5a_5.15.2+dfsg-9_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5dbus5_5.15.2+dfsg-9_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5gui5_5.15.2+dfsg-9_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5network5_5.15.2+dfsg-9_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5printsupport5_5.15.2+dfsg-9_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5sql5_5.15.2+dfsg-9_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5test5_5.15.2+dfsg-9_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5widgets5_5.15.2+dfsg-9_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/libqt5xml5_5.15.2+dfsg-9_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/qtbase5-dev_5.15.2+dfsg-9_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/q/qtbase-opensource-src/qtbase5-dev-tools_5.15.2+dfsg-9_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/r/re2/libre2-9_20210201+dfsg-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/r/re2/libre2-dev_20210201+dfsg-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2+b2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/shared-mime-info/shared-mime-info_2.0-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/snappy/libsnappy1v5_1.1.8-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/snappy/libsnappy-dev_1.1.8-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/speech-dispatcher/libspeechd2_0.11.4-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.11.4-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/sqlite3/libsqlite3-0_3.34.1-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libsystemd0_251.3-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libsystemd-dev_251.3-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libudev1_251.3-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/s/systemd/libudev-dev_251.3-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-31_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tiff/libtiff5_4.2.0-1+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tiff/libtiff-dev_4.2.0-1+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/t/tiff/libtiffxx5_4.2.0-1+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/unbound/libunbound8_1.13.1-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libblkid1_2.36.1-8+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libblkid-dev_2.36.1-8+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libmount1_2.36.1-8+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libmount-dev_2.36.1-8+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/libuuid1_2.36.1-8+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/u/util-linux/uuid-dev_2.36.1-8+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/v/vulkan-loader/libvulkan1_1.3.224.0-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/v/vulkan-loader/libvulkan-dev_1.3.224.0-1~bpo11+1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-bin_1.18.0-2~exp1.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-client0_1.18.0-2~exp1.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-cursor0_1.18.0-2~exp1.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-dev_1.18.0-2~exp1.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-egl1_1.18.0-2~exp1.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-egl-backend-dev_1.18.0-2~exp1.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland/libwayland-server0_1.18.0-2~exp1.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/w/wayland-protocols/wayland-protocols_1.20-1_all.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-image/libxcb-image0_0.4.0-1+b3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-image/libxcb-image0-dev_0.4.0-1+b3_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-keysyms/libxcb-keysyms1_0.4.0-1+b2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util/libxcb-util1_0.4.0-1+b1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util/libxcb-util-dev_0.4.0-1+b1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0_0.3.9-1+b1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0-dev_0.3.9-1+b1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xcb-util-wm/libxcb-icccm4_0.4.1-1.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xft/libxft2_2.3.2-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xft/libxft-dev_2.3.2-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xorgproto/x11proto-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/x/xz-utils/liblzma5_5.2.5-2.1~deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2+deb11u2_mipsel.deb -https://snapshot.debian.org/archive/debian/20221105T211506Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-2+deb11u2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/alsa-lib/libasound2_1.2.4-1.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/alsa-lib/libasound2-dev_1.2.4-1.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/atk1.0/libatk1.0-0_2.38.0-1~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/atk1.0/libatk1.0-dev_2.38.0-1~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.38.0-4~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.38.0-4~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.44.1-1~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.44.1-1~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/attr/libattr1_2.4.48-6_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/audit/libaudit1_3.0-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/avahi/libavahi-client3_0.8-5+deb11u2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/a/avahi/libavahi-common3_0.8-5+deb11u2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/bluez/libbluetooth3_5.55-3.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/bluez/libbluetooth-dev_5.55-3.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/brotli/libbrotli1_1.0.9-2+b2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/b/brotli/libbrotli-dev_1.0.9-2+b2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo2_1.16.0-5_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo2-dev_1.16.0-5_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-5_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-5_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/colord/libcolord2_1.4.5-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcups2_2.3.3op2-3+deb11u2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcups2-dev_2.3.3op2-3+deb11u2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcupsimage2_2.3.3op2-3+deb11u2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cups/libcupsimage2-dev_2.3.3op2-3+deb11u2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/curl/libcurl3-gnutls_7.88.1-7~bpo11+2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/curl/libcurl4-gnutls-dev_7.88.1-7~bpo11+2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.27+dfsg-2.1+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.8_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.110-6_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/dbus/libdbus-1-3_1.12.24-0+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/dbus/libdbus-1-dev_1.12.24-0+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/d/double-conversion/libdouble-conversion3_3.1.5-6.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.46.6-1~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/e2fsprogs/libcom-err2_1.46.6-1~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/elfutils/libelf1_0.187-1~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/elfutils/libelf-dev_0.187-1~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/expat/libexpat1_2.2.10-2+deb11u5_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/e/expat/libexpat1-dev_2.2.10-2+deb11u5_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/flac/libflac8_1.3.3-2+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/flac/libflac-dev_1.3.3-2+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-4.2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fontconfig/libfontconfig-dev_2.13.1-4.2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/freetype/libfreetype6_2.10.4+dfsg-1+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/freetype/libfreetype-dev_2.10.4+dfsg-1+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fribidi/libfribidi0_1.0.8-2+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/f/fribidi/libfribidi-dev_1.0.8-2+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libatomic1_10.2.1-6_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libgcc-10-dev_10.2.1-6_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libgcc-s1_10.2.1-6_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libgomp1_10.2.1-6_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libstdc++-10-dev_10.2.1-6_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gcc-10/libstdc++6_10.2.1-6_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-0_2.42.2+dfsg-1+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-dev_2.42.2+dfsg-1+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glib2.0/libglib2.0-0_2.66.8-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glib2.0/libglib2.0-dev_2.66.8-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glibc/libc6_2.31-13+deb11u5_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/glibc/libc6-dev_2.31-13+deb11u5_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls28-dev_3.7.1-5+deb11u3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls30_3.7.1-5+deb11u3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls-dane0_3.7.1-5+deb11u3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutls-openssl27_3.7.1-5+deb11u3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gnutls28/libgnutlsxx28_3.7.1-5+deb11u3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.4+dfsg1-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.4+dfsg1-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphite2/libgraphite2-3_1.3.14-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/graphite2/libgraphite2-dev_1.3.14-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.33-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.24-4+deb11u3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.24-4+deb11u3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk4/libgtk-4-1_4.8.3+ds-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/g/gtk4/libgtk-4-dev_4.8.3+ds-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz0b_2.7.4-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.7.4-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.7.4-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.7.4-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/i/icu/libicu67_67.1-7_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/j/jbigkit/libjbig-dev_2.1-3.1+b2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.6.2-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/keyutils/libkeyutils1_1.6.1-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/krb5-multidev_1.18.3-6+deb11u3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6+deb11u3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libgssrpc4_1.18.3-6+deb11u3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libk5crypto3_1.18.3-6+deb11u3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkadm5clnt-mit12_1.18.3-6+deb11u3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkadm5srv-mit12_1.18.3-6+deb11u3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkdb5-10_1.18.3-6+deb11u3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkrb5-3_1.18.3-6+deb11u3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkrb5-dev_1.18.3-6+deb11u3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/k/krb5/libkrb5support0_1.18.3-6+deb11u3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libb/libb2/libb2-1_0.98.1-1.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libb/libbsd/libbsd0_0.11.3-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcap2/libcap2_2.44-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcap2/libcap-dev_2.44-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2.2+b1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libc/libcloudproviders/libcloudproviders0_0.3.0-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdatrie/libdatrie1_0.2.13-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdatrie/libdatrie-dev_0.2.13-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr492+repack1-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr492+repack1-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr492+repack1-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr492+repack1-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdeflate/libdeflate0_1.10-2~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdeflate/libdeflate-dev_1.10-2~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm2_2.4.104-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.104-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-dev_2.4.104-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.104-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.104-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libepoxy/libepoxy0_1.5.8-1~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.8-1~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libevdev/libevdev2_1.11.0+dfsg-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libevdev/libevdev-dev_1.11.0+dfsg-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libe/libevent/libevent-2.1-7_2.1.12-stable-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libf/libffi/libffi7_3.3-6_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libf/libffi/libffi-dev_3.3-6_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.7-6_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.7-6_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libegl1_1.3.2-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libegl-dev_1.3.2-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgl1_1.3.2-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgl-dev_1.3.2-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgles1_1.3.2-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgles2_1.3.2-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libgles-dev_1.3.2-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglvnd0_1.3.2-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglvnd-dev_1.3.2-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglx0_1.3.2-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libglx-dev_1.3.2-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libglvnd/libopengl0_1.3.2-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgpg-error/libgpg-error0_1.38-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.38-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libg/libgudev/libgudev-1.0-0_234-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libice/libice6_1.0.10-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libidn2/libidn2-0_2.3.0-5_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libidn/libidn11_1.33-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libinput/libinput10_1.16.4-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libi/libinput/libinput-dev_1.16.4-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.0.6-4_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_2.0.6-4_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjsoncpp/libjsoncpp24_1.9.4-4_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.9.4-4_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libm/libmd/libmd0_1.0.3-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libn/libnsl/libnsl2_1.3.0-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b10_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libo/libogg/libogg0_1.3.4-0.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libo/libogg/libogg-dev_1.3.4-0.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpciaccess/libpciaccess0_0.16-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libproxy/libproxy1v5_0.4.17-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpsl/libpsl5_0.21.0-1.2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libselinux/libselinux1_3.1-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libselinux/libselinux1-dev_3.1-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsepol/libsepol1_3.1-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsepol/libsepol1-dev_3.1-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsm/libsm6_1.2.3-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsndfile/libsndfile1_1.0.31-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.72.0-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.72.0-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libs/libssh2/libssh2-1_1.9.0-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libthai/libthai0_0.1.28-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libthai/libthai-dev_0.1.28-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libtirpc/libtirpc3_1.3.1-1+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libt/libtool/libltdl7_2.4.6-15_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libu/libunistring/libunistring2_0.9.10-4_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libu/libutempter/libutempter0_1.2.1-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libu/libutempter/libutempter-dev_1.2.1-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva2_2.17.0-1~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-dev_2.17.0-1~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-drm2_2.17.0-1~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-glx2_2.17.0-1~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-wayland2_2.17.0-1~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libva/libva-x11-2_2.17.0-1~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libvorbis/libvorbis0a_1.3.7-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.7-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwacom/libwacom2_1.8-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebp6_0.6.1-2.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebp7_1.2.4-0.2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-6_1.7.2-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-dev_1.7.2-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-xcb1_1.7.2-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libx11/libx11-xcb-dev_1.7.2-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxau/libxau6_1.0.9-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxau/libxau-dev_1.0.9-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb1_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb1-dev_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri2-0_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri3-0_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-dri3-dev_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-glx0_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-present0_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-present-dev_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-randr0_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-randr0-dev_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-render0_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-render0-dev_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shape0_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shape0-dev_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shm0_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-sync1_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-sync-dev_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xfixes0_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xfixes0-dev_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xinerama0_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xinput0_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcb/libxcb-xkb1_1.14-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.5-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.5-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcrypt/libcrypt1_4.4.18-4_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcrypt/libcrypt-dev_4.4.18-4_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxext/libxext6_1.3.3-1.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxext/libxext-dev_1.3.3-1.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxi/libxi6_1.7.10-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxi/libxi-dev_1.7.10-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxkbcommon/libxkbcommon0_1.0.3-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_1.0.3-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxkbcommon/libxkbcommon-x11-0_1.0.3-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxml2/libxml2_2.9.10+dfsg-6.7+deb11u4_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxml2/libxml2-dev_2.9.10+dfsg-6.7+deb11u4_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxshmfence/libxshmfence-dev_1.3-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxslt/libxslt1.1_1.1.34-4+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxslt/libxslt1-dev_1.1.34-4+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxss/libxss1_1.2.3-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxt/libxt6_1.2.0-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxt/libxt-dev_1.2.0-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/libz/libzstd/libzstd1_1.4.8+dfsg-2.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lcms2/liblcms2-2_2.12~rc1-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lerc/liblerc4_4.0.0+ds-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/linux/linux-libc-dev_6.1.12-1~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lz4/liblz4-1_1.9.3-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/l/lzo2/liblzo2-2_2.10-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/md4c/libmd4c0_0.4.7-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libegl1-mesa_20.3.5-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libegl1-mesa-dev_20.3.5-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgbm1_20.3.5-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgbm-dev_20.3.5-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgl1-mesa-dev_20.3.5-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libgl1-mesa-glx_20.3.5-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libglapi-mesa_20.3.5-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/libwayland-egl1-mesa_20.3.5-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mesa/mesa-common-dev_20.3.5-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/minizip/libminizip1_1.1-8+b1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/m/mtdev/libmtdev1_1.1.6-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libncurses6_6.2+20201114-2+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libncurses-dev_6.2+20201114-2+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libncursesw6_6.2+20201114-2+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/ncurses/libtinfo6_6.2+20201114-2+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nettle/libhogweed6_3.7.3-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nettle/libnettle8_3.7.3-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nghttp2/libnghttp2-14_1.43.0-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nspr/libnspr4_4.29-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nspr/libnspr4-dev_4.29-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nss/libnss3_3.61-1+deb11u3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/n/nss/libnss3-dev_3.61-1+deb11u3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/openldap/libldap-2.4-2_2.4.59+dfsg-1~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/openssl/libssl1.1_1.1.1n-0+deb11u4_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/openssl/libssl-dev_1.1.1n-0+deb11u4_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/opus/libopus0_1.3.1-0.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/o/opus/libopus-dev_1.3.1-0.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/p11-kit/libp11-kit0_0.23.22-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pam/libpam0g_1.4.0-9+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pam/libpam0g-dev_1.4.0-9+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpango-1.0-0_1.46.2-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpango1.0-dev_1.46.2-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.46.2-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.46.2-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.46.2-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pciutils/libpci3_3.7.0-5_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pciutils/libpci-dev_3.7.0-5_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-16-0_10.36-2+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-32-0_10.36-2+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-8-0_10.36-2+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-dev_10.36-2+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre2/libpcre2-posix2_10.36-2+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre16-3_8.39-13_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre32-3_8.39-13_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre3_8.39-13_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcre3-dev_8.39-13_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-13_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pipewire/libpipewire-0.3-0_0.3.65-2~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pipewire/libpipewire-0.3-dev_0.3.65-2~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pipewire/libspa-0.2-dev_0.3.65-2~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pixman/libpixman-1-0_0.40.0-1.1~deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pixman/libpixman-1-dev_0.40.0-1.1~deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pulseaudio/libpulse0_14.2-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pulseaudio/libpulse-dev_14.2-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_14.2-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6concurrent6_6.4.2+dfsg-10~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6core6_6.4.2+dfsg-10~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6dbus6_6.4.2+dfsg-10~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6gui6_6.4.2+dfsg-10~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6network6_6.4.2+dfsg-10~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6opengl6_6.4.2+dfsg-10~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6openglwidgets6_6.4.2+dfsg-10~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6printsupport6_6.4.2+dfsg-10~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6sql6_6.4.2+dfsg-10~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6test6_6.4.2+dfsg-10~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6widgets6_6.4.2+dfsg-10~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/libqt6xml6_6.4.2+dfsg-10~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/qt6-base-dev_6.4.2+dfsg-10~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qt6-base/qt6-base-dev-tools_6.4.2+dfsg-10~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5concurrent5_5.15.2+dfsg-9_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5core5a_5.15.2+dfsg-9_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5dbus5_5.15.2+dfsg-9_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5gui5_5.15.2+dfsg-9_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5network5_5.15.2+dfsg-9_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5printsupport5_5.15.2+dfsg-9_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5sql5_5.15.2+dfsg-9_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5test5_5.15.2+dfsg-9_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5widgets5_5.15.2+dfsg-9_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/libqt5xml5_5.15.2+dfsg-9_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/qtbase5-dev_5.15.2+dfsg-9_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/q/qtbase-opensource-src/qtbase5-dev-tools_5.15.2+dfsg-9_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/r/re2/libre2-9_20210201+dfsg-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/r/re2/libre2-dev_20210201+dfsg-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2+b2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/shared-mime-info/shared-mime-info_2.0-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/snappy/libsnappy1v5_1.1.8-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/snappy/libsnappy-dev_1.1.8-1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/speech-dispatcher/libspeechd2_0.11.4-2~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.11.4-2~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/sqlite3/libsqlite3-0_3.34.1-3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libsystemd0_252.5-2~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libsystemd-dev_252.5-2~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libudev1_252.5-2~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/s/systemd/libudev-dev_252.5-2~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-31_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiff5_4.2.0-1+deb11u4_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiff6_4.5.0-6_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiff-dev_4.2.0-1+deb11u4_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tiff/libtiffxx5_4.2.0-1+deb11u4_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/t/tslib/libts0_1.22-1+b1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/unbound/libunbound8_1.17.1-2~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libblkid1_2.36.1-8+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libblkid-dev_2.36.1-8+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libmount1_2.36.1-8+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libmount-dev_2.36.1-8+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/libuuid1_2.36.1-8+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/u/util-linux/uuid-dev_2.36.1-8+deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/v/vulkan-loader/libvulkan1_1.3.224.0-1~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/v/vulkan-loader/libvulkan-dev_1.3.224.0-1~bpo11+1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-bin_1.18.0-2~exp1.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-client0_1.18.0-2~exp1.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-cursor0_1.18.0-2~exp1.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-dev_1.18.0-2~exp1.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-egl1_1.18.0-2~exp1.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-egl-backend-dev_1.18.0-2~exp1.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland/libwayland-server0_1.18.0-2~exp1.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/w/wayland-protocols/wayland-protocols_1.20-1_all.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-image/libxcb-image0_0.4.0-1+b3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-image/libxcb-image0-dev_0.4.0-1+b3_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-keysyms/libxcb-keysyms1_0.4.0-1+b2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util/libxcb-util1_0.4.0-1+b1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util/libxcb-util-dev_0.4.0-1+b1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0_0.3.9-1+b1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-renderutil/libxcb-render-util0-dev_0.3.9-1+b1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xcb-util-wm/libxcb-icccm4_0.4.1-1.1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xft/libxft2_2.3.2-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xft/libxft-dev_2.3.2-2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xorgproto/x11proto-dev_2020.1-1_all.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/x/xz-utils/liblzma5_5.2.5-2.1~deb11u1_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2+deb11u2_mipsel.deb +https://snapshot.debian.org/archive/debian/20230611T210420Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-2+deb11u2_mipsel.deb diff --git a/build/linux/sysroot_scripts/generated_package_lists/sid.amd64 b/build/linux/sysroot_scripts/generated_package_lists/sid.amd64 deleted file mode 100644 index c7889a7..0000000 --- a/build/linux/sysroot_scripts/generated_package_lists/sid.amd64 +++ /dev/null @@ -1,378 +0,0 @@ -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/alsa-lib/libasound2_1.2.5.1-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/alsa-lib/libasound2-dev_1.2.5.1-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/atk1.0/libatk1.0-0_2.36.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/atk1.0/libatk1.0-dev_2.36.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.38.0-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.38.0-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.40.3-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.40.3-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/attr/libattr1_2.4.48-6_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/audit/libaudit1_3.0.5-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/avahi/libavahi-client3_0.8-5_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/avahi/libavahi-common3_0.8-5_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/bluez/libbluetooth3_5.55-3.1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/bluez/libbluetooth-dev_5.55-3.1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/brotli/libbrotli1_1.0.9-2+b2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/brotli/libbrotli-dev_1.0.9-2+b2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo2_1.16.0-5_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo2-dev_1.16.0-5_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-5_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-5_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/colord/libcolord2_1.4.5-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcups2_2.3.3op2-3+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcups2-dev_2.3.3op2-3+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcupsimage2_2.3.3op2-3+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcupsimage2-dev_2.3.3op2-3+deb11u1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/curl/libcurl3-gnutls_7.74.0-1.3+b1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/curl/libcurl4-gnutls-dev_7.74.0-1.3+b1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.27+dfsg-2.1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.8_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.112-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/dbus/libdbus-1-3_1.12.20-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/dbus/libdbus-1-dev_1.12.20-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.46.2-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/e2fsprogs/libcom-err2_1.46.2-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/elfutils/libelf1_0.185-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/elfutils/libelf-dev_0.185-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/expat/libexpat1_2.2.10-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/expat/libexpat1-dev_2.2.10-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/flac/libflac8_1.3.3-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/flac/libflac-dev_1.3.3-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-4.2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fontconfig/libfontconfig-dev_2.13.1-4.2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/freetype/libfreetype6_2.10.4+dfsg-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/freetype/libfreetype-dev_2.10.4+dfsg-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fribidi/libfribidi0_1.0.8-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fribidi/libfribidi-dev_1.0.8-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-10/libgcc-10-dev_10.2.1-6_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-10/libstdc++-10-dev_10.2.1-6_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libasan6_11.2.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libatomic1_11.2.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libgomp1_11.2.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libitm1_11.2.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/liblsan0_11.2.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libquadmath0_11.2.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libstdc++6_11.2.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libtsan0_11.2.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libubsan1_11.2.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-6/libcilkrts5_6.3.0-18+deb9u1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-6/libgcc1_6.3.0-18+deb9u1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-6/libmpx2_6.3.0-18+deb9u1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-0_2.42.6+dfsg-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-dev_2.42.6+dfsg-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glib2.0/libglib2.0-0_2.68.3-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glib2.0/libglib2.0-dev_2.68.3-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glibc/libc6_2.31-16_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glibc/libc6-dev_2.31-16_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls28-dev_3.7.1-5_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls30_3.7.1-5_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls-dane0_3.7.1-5_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls-openssl27_3.7.1-5_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutlsxx28_3.7.1-5_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.4+dfsg1-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.4+dfsg1-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphite2/libgraphite2-3_1.3.14-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphite2/libgraphite2-dev_1.3.14-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.33-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.30-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.30-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk4/libgtk-4-1_4.3.1+ds-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk4/libgtk-4-1_4.3.1+ds-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk4/libgtk-4-dev_4.3.1+ds-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk4/libgtk-4-dev_4.3.1+ds-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz0b_2.7.4-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.7.4-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.7.4-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.7.4-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/i/icu/libicu67_67.1-7_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/j/jbigkit/libjbig-dev_2.1-3.1+b2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.6.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/keyutils/libkeyutils1_1.6.1-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/krb5-multidev_1.18.3-6_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libgssrpc4_1.18.3-6_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libk5crypto3_1.18.3-6_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkadm5clnt-mit12_1.18.3-6_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkadm5srv-mit12_1.18.3-6_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkdb5-10_1.18.3-6_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkrb5-3_1.18.3-6_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkrb5-dev_1.18.3-6_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkrb5support0_1.18.3-6_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator1_0.4.92-8_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-8_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-8_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-8_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libb/libbsd/libbsd0_0.11.3-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcap2/libcap2_2.44-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcap2/libcap-dev_2.44-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2.2+b1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcloudproviders/libcloudproviders0_0.3.0-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdatrie/libdatrie1_0.2.13-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdatrie/libdatrie-dev_0.2.13-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr492+repack1-2+b1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr492+repack1-2+b1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr492+repack1-2+b1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr492+repack1-2+b1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdeflate/libdeflate0_1.7-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdeflate/libdeflate-dev_1.7-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm2_2.4.104-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.104-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-dev_2.4.104-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-intel1_2.4.104-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.104-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.104-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libepoxy/libepoxy0_1.5.8-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.8-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libevdev/libevdev2_1.11.0+dfsg-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libevdev/libevdev-dev_1.11.0+dfsg-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libevent/libevent-2.1-7_2.1.12-stable-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi6_3.2.1-9_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi7_3.3-6_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi8_3.4.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi-dev_3.3-6_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.7-6_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.7-6_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libegl1_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libegl-dev_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgl1_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgl-dev_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgles1_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgles2_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgles-dev_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglvnd0_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglvnd-dev_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglx0_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglx-dev_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libopengl0_1.3.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgpg-error/libgpg-error0_1.38-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.38-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgudev/libgudev-1.0-0_234-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libice/libice6_1.0.10-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libidn2/libidn2-0_2.3.2-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libidn/libidn11_1.33-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libindicator/libindicator3-7_0.5.0-4_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libindicator/libindicator7_0.5.0-4_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libinput/libinput10_1.16.4-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libinput/libinput-dev_1.16.4-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.0.6-4_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_2.0.6-4_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjsoncpp/libjsoncpp24_1.9.4-4_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.9.4-4_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libm/libmd/libmd0_1.0.3-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libn/libnsl/libnsl2_1.3.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b10_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libo/libogg/libogg0_1.3.4-0.1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libo/libogg/libogg-dev_1.3.4-0.1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpciaccess/libpciaccess0_0.16-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpsl/libpsl5_0.21.0-1.2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1.1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libselinux/libselinux1_3.1-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libselinux/libselinux1-dev_3.1-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsepol/libsepol1_3.1-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsepol/libsepol1-dev_3.1-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsm/libsm6_1.2.3-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsndfile/libsndfile1_1.0.31-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.72.0-4_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.72.0-4_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libssh2/libssh2-1_1.9.0-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libthai/libthai0_0.1.28-4_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libthai/libthai-dev_0.1.28-4_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libtirpc/libtirpc3_1.3.2-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libtool/libltdl7_2.4.6-15_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libu/libunistring/libunistring2_0.9.10-6_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libu/libutempter/libutempter0_1.2.1-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libu/libutempter/libutempter-dev_1.2.1-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva2_2.12.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-dev_2.12.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-drm2_2.12.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-glx2_2.12.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-wayland2_2.12.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-x11-2_2.12.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libvorbis/libvorbis0a_1.3.7-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.7-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwacom/libwacom2_1.8-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebp6_0.6.1-2.1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2.1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2.1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2.1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-6_1.7.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-dev_1.7.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-xcb1_1.7.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-xcb-dev_1.7.2-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxau/libxau6_1.0.9-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxau/libxau-dev_1.0.9-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb1_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb1-dev_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri2-0_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri3-0_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri3-dev_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-glx0_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-present0_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-present-dev_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-render0_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-render0-dev_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-shm0_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-sync1_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-xfixes0_1.14-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.5-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.5-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxext/libxext6_1.3.3-1.1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxext/libxext-dev_1.3.3-1.1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxi/libxi6_1.7.10-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxi/libxi-dev_1.7.10-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxkbcommon/libxkbcommon0_1.0.3-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_1.0.3-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxml2/libxml2_2.9.10+dfsg-6.7_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxml2/libxml2-dev_2.9.10+dfsg-6.7_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxshmfence/libxshmfence-dev_1.3-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxslt/libxslt1.1_1.1.34-4_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxslt/libxslt1-dev_1.1.34-4_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxss/libxss1_1.2.3-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxt/libxt6_1.2.0-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxt/libxt-dev_1.2.0-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libz/libzstd/libzstd1_1.4.8+dfsg-2.1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/lcms2/liblcms2-2_2.12~rc1-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/linux/linux-libc-dev_5.10.46-4_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/lz4/liblz4-1_1.9.3-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/lzo2/liblzo2-2_2.10-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libegl1-mesa_20.3.5-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libegl1-mesa-dev_20.3.5-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgbm1_20.3.5-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgbm-dev_20.3.5-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgl1-mesa-dev_20.3.5-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgl1-mesa-glx_20.3.5-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libglapi-mesa_20.3.5-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libwayland-egl1-mesa_20.3.5-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/mesa-common-dev_20.3.5-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/minizip/libminizip1_1.1-8+b1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mtdev/libmtdev1_1.1.6-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libncurses6_6.2+20201114-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libncurses-dev_6.2+20201114-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libncursesw6_6.2+20201114-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libtinfo6_6.2+20201114-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nettle/libhogweed6_3.7.3-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nettle/libnettle8_3.7.3-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nghttp2/libnghttp2-14_1.43.0-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nspr/libnspr4_4.32-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nspr/libnspr4-dev_4.32-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nss/libnss3_3.68-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nss/libnss3-dev_3.68-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/openldap/libldap-2.4-2_2.4.57+dfsg-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/openssl/libssl1.1_1.1.1k-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/openssl/libssl-dev_1.1.1k-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/opus/libopus0_1.3.1-0.1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/opus/libopus-dev_1.3.1-0.1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/p11-kit/libp11-kit0_0.23.22-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pam/libpam0g_1.4.0-9_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pam/libpam0g-dev_1.4.0-9_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpango-1.0-0_1.46.2-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpango1.0-dev_1.46.2-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.46.2-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.46.2-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.46.2-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5.1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pciutils/libpci3_3.7.0-5_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pciutils/libpci-dev_3.7.0-5_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-16-0_10.36-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-32-0_10.36-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-8-0_10.36-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-dev_10.36-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-posix0_10.22-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-posix2_10.36-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre16-3_8.39-13_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre32-3_8.39-13_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre3_8.39-13_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre3-dev_8.39-13_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-13_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pipewire/libpipewire-0.3-0_0.3.33-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pipewire/libpipewire-0.3-dev_0.3.33-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pipewire/libspa-0.2-dev_0.3.33-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pixman/libpixman-1-0_0.40.0-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pixman/libpixman-1-dev_0.40.0-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pulseaudio/libpulse0_14.2-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pulseaudio/libpulse-dev_14.2-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_14.2-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/r/re2/libre2-9_20210801+dfsg-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/r/re2/libre2-dev_20210801+dfsg-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2+b2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/shared-mime-info/shared-mime-info_2.0-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/snappy/libsnappy1v5_1.1.8-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/snappy/libsnappy-dev_1.1.8-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/speech-dispatcher/libspeechd2_0.10.2-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.10.2-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/sqlite3/libsqlite3-0_3.34.1-3_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/systemd/libsystemd0_247.9-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/systemd/libudev1_247.9-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/systemd/libudev-dev_247.9-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-31_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tiff/libtiff5_4.2.0-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tiff/libtiff-dev_4.2.0-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tiff/libtiffxx5_4.2.0-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/unbound/libunbound8_1.13.1-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libblkid1_2.36.1-8_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libblkid-dev_2.36.1-8_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libmount1_2.36.1-8_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libmount-dev_2.36.1-8_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libuuid1_2.36.1-8_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/uuid-dev_2.36.1-8_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/v/valgrind/valgrind_3.16.1-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/v/vulkan-loader/libvulkan1_1.2.162.0-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/v/vulkan-loader/libvulkan-dev_1.2.162.0-1_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-client0_1.19.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-cursor0_1.19.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-dev_1.19.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-egl1_1.19.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-server0_1.19.0-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland-protocols/wayland-protocols_1.20-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/x11proto-composite/x11proto-composite-dev_0.4.2-2_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/x11proto-damage/x11proto-damage-dev_1.2.1-2_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/x11proto-fixes/x11proto-fixes-dev_5.0-2_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xft/libxft2_2.3.2-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xft/libxft-dev_2.3.2-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-input-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-kb-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-randr-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-record-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-render-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-xext-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-xinerama-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xz-utils/liblzma5_5.2.5-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2_amd64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-2_amd64.deb diff --git a/build/linux/sysroot_scripts/generated_package_lists/sid.arm b/build/linux/sysroot_scripts/generated_package_lists/sid.arm deleted file mode 100644 index a268bc5..0000000 --- a/build/linux/sysroot_scripts/generated_package_lists/sid.arm +++ /dev/null @@ -1,374 +0,0 @@ -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/alsa-lib/libasound2_1.2.5.1-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/alsa-lib/libasound2-dev_1.2.5.1-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/atk1.0/libatk1.0-0_2.36.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/atk1.0/libatk1.0-dev_2.36.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.38.0-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.38.0-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.40.3-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.40.3-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/attr/libattr1_2.4.48-6_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/audit/libaudit1_3.0.5-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/avahi/libavahi-client3_0.8-5_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/avahi/libavahi-common3_0.8-5_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/bluez/libbluetooth3_5.55-3.1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/bluez/libbluetooth-dev_5.55-3.1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/brotli/libbrotli1_1.0.9-2+b2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/brotli/libbrotli-dev_1.0.9-2+b2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo2_1.16.0-5_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo2-dev_1.16.0-5_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-5_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-5_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/colord/libcolord2_1.4.5-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcups2_2.3.3op2-3+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcups2-dev_2.3.3op2-3+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcupsimage2_2.3.3op2-3+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcupsimage2-dev_2.3.3op2-3+deb11u1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/curl/libcurl3-gnutls_7.74.0-1.3+b1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/curl/libcurl4-gnutls-dev_7.74.0-1.3+b1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.27+dfsg-2.1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.8_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.112-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/dbus/libdbus-1-3_1.12.20-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/dbus/libdbus-1-dev_1.12.20-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.46.2-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/e2fsprogs/libcom-err2_1.46.2-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/elfutils/libelf1_0.185-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/elfutils/libelf-dev_0.185-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/expat/libexpat1_2.2.10-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/expat/libexpat1-dev_2.2.10-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/flac/libflac8_1.3.3-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/flac/libflac-dev_1.3.3-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-4.2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fontconfig/libfontconfig-dev_2.13.1-4.2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/freetype/libfreetype6_2.10.4+dfsg-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/freetype/libfreetype-dev_2.10.4+dfsg-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fribidi/libfribidi0_1.0.8-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fribidi/libfribidi-dev_1.0.8-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-10/libgcc-10-dev_10.2.1-6_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-10/libstdc++-10-dev_10.2.1-6_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libasan6_11.2.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libatomic1_11.2.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libgomp1_11.2.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libstdc++6_11.2.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libubsan1_11.2.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-6/libgcc1_6.3.0-18+deb9u1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-0_2.42.6+dfsg-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-dev_2.42.6+dfsg-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glib2.0/libglib2.0-0_2.68.3-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glib2.0/libglib2.0-dev_2.68.3-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glibc/libc6_2.31-16_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glibc/libc6-dev_2.31-16_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls28-dev_3.7.1-5_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls30_3.7.1-5_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls-dane0_3.7.1-5_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls-openssl27_3.7.1-5_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutlsxx28_3.7.1-5_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.4+dfsg1-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.4+dfsg1-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphite2/libgraphite2-3_1.3.14-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphite2/libgraphite2-dev_1.3.14-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.33-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.30-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.30-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk4/libgtk-4-1_4.3.1+ds-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk4/libgtk-4-dev_4.3.1+ds-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz0b_2.7.4-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.7.4-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.7.4-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.7.4-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/i/icu/libicu67_67.1-7_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/j/jbigkit/libjbig-dev_2.1-3.1+b2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.6.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/keyutils/libkeyutils1_1.6.1-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/krb5-multidev_1.18.3-6_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libgssrpc4_1.18.3-6_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libk5crypto3_1.18.3-6_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkadm5clnt-mit12_1.18.3-6_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkadm5srv-mit12_1.18.3-6_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkdb5-10_1.18.3-6_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkrb5-3_1.18.3-6_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkrb5-dev_1.18.3-6_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkrb5support0_1.18.3-6_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator1_0.4.92-8_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-8_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-8_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-8_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libb/libbsd/libbsd0_0.11.3-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcap2/libcap2_2.44-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcap2/libcap-dev_2.44-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2.2+b1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcloudproviders/libcloudproviders0_0.3.0-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdatrie/libdatrie1_0.2.13-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdatrie/libdatrie-dev_0.2.13-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr492+repack1-2+b1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr492+repack1-2+b1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr492+repack1-2+b1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr492+repack1-2+b1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdeflate/libdeflate0_1.7-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdeflate/libdeflate-dev_1.7-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm2_2.4.104-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.104-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-dev_2.4.104-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-etnaviv1_2.4.104-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-exynos1_2.4.104-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-freedreno1_2.4.104-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.104-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-omap1_2.4.104-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.104-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-tegra0_2.4.104-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libepoxy/libepoxy0_1.5.8-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.8-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libevdev/libevdev2_1.11.0+dfsg-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libevdev/libevdev-dev_1.11.0+dfsg-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libevent/libevent-2.1-7_2.1.12-stable-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi6_3.2.1-9_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi7_3.3-6_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi8_3.4.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi-dev_3.3-6_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.7-6_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.7-6_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libegl1_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libegl-dev_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgl1_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgl-dev_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgles1_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgles2_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgles-dev_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglvnd0_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglvnd-dev_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglx0_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglx-dev_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libopengl0_1.3.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgpg-error/libgpg-error0_1.38-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.38-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgudev/libgudev-1.0-0_234-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libice/libice6_1.0.10-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libidn2/libidn2-0_2.3.2-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libidn/libidn11_1.33-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libindicator/libindicator3-7_0.5.0-4_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libindicator/libindicator7_0.5.0-4_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libinput/libinput10_1.16.4-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libinput/libinput-dev_1.16.4-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.0.6-4_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_2.0.6-4_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjsoncpp/libjsoncpp24_1.9.4-4_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.9.4-4_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libm/libmd/libmd0_1.0.3-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libn/libnsl/libnsl2_1.3.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b10_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libo/libogg/libogg0_1.3.4-0.1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libo/libogg/libogg-dev_1.3.4-0.1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpciaccess/libpciaccess0_0.16-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpsl/libpsl5_0.21.0-1.2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1.1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libselinux/libselinux1_3.1-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libselinux/libselinux1-dev_3.1-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsepol/libsepol1_3.1-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsepol/libsepol1-dev_3.1-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsm/libsm6_1.2.3-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsndfile/libsndfile1_1.0.31-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.72.0-4_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.72.0-4_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libssh2/libssh2-1_1.9.0-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libthai/libthai0_0.1.28-4_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libthai/libthai-dev_0.1.28-4_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libtirpc/libtirpc3_1.3.2-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libtool/libltdl7_2.4.6-15_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libu/libunistring/libunistring2_0.9.10-6_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libu/libutempter/libutempter0_1.2.1-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libu/libutempter/libutempter-dev_1.2.1-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva2_2.12.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-dev_2.12.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-drm2_2.12.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-glx2_2.12.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-wayland2_2.12.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-x11-2_2.12.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libvorbis/libvorbis0a_1.3.7-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.7-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwacom/libwacom2_1.8-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebp6_0.6.1-2.1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2.1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2.1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2.1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-6_1.7.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-dev_1.7.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-xcb1_1.7.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-xcb-dev_1.7.2-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxau/libxau6_1.0.9-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxau/libxau-dev_1.0.9-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb1_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb1-dev_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri2-0_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri3-0_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri3-dev_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-glx0_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-present0_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-present-dev_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-render0_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-render0-dev_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-shm0_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-sync1_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-xfixes0_1.14-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.5-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.5-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxext/libxext6_1.3.3-1.1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxext/libxext-dev_1.3.3-1.1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxi/libxi6_1.7.10-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxi/libxi-dev_1.7.10-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxkbcommon/libxkbcommon0_1.0.3-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_1.0.3-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxml2/libxml2_2.9.10+dfsg-6.7_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxml2/libxml2-dev_2.9.10+dfsg-6.7_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxshmfence/libxshmfence-dev_1.3-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxslt/libxslt1.1_1.1.34-4_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxslt/libxslt1-dev_1.1.34-4_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxss/libxss1_1.2.3-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxt/libxt6_1.2.0-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxt/libxt-dev_1.2.0-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libz/libzstd/libzstd1_1.4.8+dfsg-2.1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/lcms2/liblcms2-2_2.12~rc1-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/linux/linux-libc-dev_5.10.46-4_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/lz4/liblz4-1_1.9.3-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/lzo2/liblzo2-2_2.10-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libegl1-mesa_20.3.5-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libegl1-mesa-dev_20.3.5-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgbm1_20.3.5-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgbm-dev_20.3.5-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgl1-mesa-dev_20.3.5-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgl1-mesa-glx_20.3.5-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libglapi-mesa_20.3.5-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libwayland-egl1-mesa_20.3.5-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/mesa-common-dev_20.3.5-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/minizip/libminizip1_1.1-8+b1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mtdev/libmtdev1_1.1.6-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libncurses6_6.2+20201114-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libncurses-dev_6.2+20201114-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libncursesw6_6.2+20201114-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libtinfo6_6.2+20201114-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nettle/libhogweed6_3.7.3-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nettle/libnettle8_3.7.3-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nghttp2/libnghttp2-14_1.43.0-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nspr/libnspr4_4.32-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nspr/libnspr4-dev_4.32-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nss/libnss3_3.68-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nss/libnss3-dev_3.68-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/openldap/libldap-2.4-2_2.4.57+dfsg-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/openssl/libssl1.1_1.1.1k-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/openssl/libssl-dev_1.1.1k-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/opus/libopus0_1.3.1-0.1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/opus/libopus-dev_1.3.1-0.1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/p11-kit/libp11-kit0_0.23.22-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pam/libpam0g_1.4.0-9_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pam/libpam0g-dev_1.4.0-9_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpango-1.0-0_1.46.2-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpango1.0-dev_1.46.2-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.46.2-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.46.2-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.46.2-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5.1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pciutils/libpci3_3.7.0-5_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pciutils/libpci-dev_3.7.0-5_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-16-0_10.36-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-32-0_10.36-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-8-0_10.36-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-dev_10.36-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-posix0_10.22-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-posix2_10.36-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre16-3_8.39-13_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre32-3_8.39-13_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre3_8.39-13_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre3-dev_8.39-13_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-13_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pipewire/libpipewire-0.3-0_0.3.33-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pipewire/libpipewire-0.3-dev_0.3.33-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pipewire/libspa-0.2-dev_0.3.33-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pixman/libpixman-1-0_0.40.0-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pixman/libpixman-1-dev_0.40.0-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pulseaudio/libpulse0_14.2-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pulseaudio/libpulse-dev_14.2-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_14.2-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/r/re2/libre2-9_20210801+dfsg-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/r/re2/libre2-dev_20210801+dfsg-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2+b2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/shared-mime-info/shared-mime-info_2.0-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/snappy/libsnappy1v5_1.1.8-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/snappy/libsnappy-dev_1.1.8-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/speech-dispatcher/libspeechd2_0.10.2-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.10.2-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/sqlite3/libsqlite3-0_3.34.1-3_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/systemd/libsystemd0_247.9-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/systemd/libudev1_247.9-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/systemd/libudev-dev_247.9-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-31_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tiff/libtiff5_4.2.0-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tiff/libtiff-dev_4.2.0-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tiff/libtiffxx5_4.2.0-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/unbound/libunbound8_1.13.1-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libblkid1_2.36.1-8_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libblkid-dev_2.36.1-8_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libmount1_2.36.1-8_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libmount-dev_2.36.1-8_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libuuid1_2.36.1-8_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/uuid-dev_2.36.1-8_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/v/valgrind/valgrind_3.16.1-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/v/vulkan-loader/libvulkan1_1.2.162.0-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/v/vulkan-loader/libvulkan-dev_1.2.162.0-1_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-client0_1.19.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-cursor0_1.19.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-dev_1.19.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-egl1_1.19.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-server0_1.19.0-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland-protocols/wayland-protocols_1.20-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/x11proto-composite/x11proto-composite-dev_0.4.2-2_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/x11proto-damage/x11proto-damage-dev_1.2.1-2_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/x11proto-fixes/x11proto-fixes-dev_5.0-2_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xft/libxft2_2.3.2-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xft/libxft-dev_2.3.2-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-input-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-kb-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-randr-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-record-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-render-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-xext-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-xinerama-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xz-utils/liblzma5_5.2.5-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2_armhf.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-2_armhf.deb diff --git a/build/linux/sysroot_scripts/generated_package_lists/sid.arm64 b/build/linux/sysroot_scripts/generated_package_lists/sid.arm64 deleted file mode 100644 index 6e80c1c..0000000 --- a/build/linux/sysroot_scripts/generated_package_lists/sid.arm64 +++ /dev/null @@ -1,377 +0,0 @@ -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/alsa-lib/libasound2_1.2.5.1-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/alsa-lib/libasound2-dev_1.2.5.1-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/atk1.0/libatk1.0-0_2.36.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/atk1.0/libatk1.0-dev_2.36.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.38.0-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.38.0-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.40.3-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.40.3-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/attr/libattr1_2.4.48-6_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/audit/libaudit1_3.0.5-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/avahi/libavahi-client3_0.8-5_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/avahi/libavahi-common3_0.8-5_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/bluez/libbluetooth3_5.55-3.1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/bluez/libbluetooth-dev_5.55-3.1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/brotli/libbrotli1_1.0.9-2+b2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/brotli/libbrotli-dev_1.0.9-2+b2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo2_1.16.0-5_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo2-dev_1.16.0-5_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-5_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-5_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/colord/libcolord2_1.4.5-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcups2_2.3.3op2-3+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcups2-dev_2.3.3op2-3+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcupsimage2_2.3.3op2-3+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcupsimage2-dev_2.3.3op2-3+deb11u1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/curl/libcurl3-gnutls_7.74.0-1.3+b1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/curl/libcurl4-gnutls-dev_7.74.0-1.3+b1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.27+dfsg-2.1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.8_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.112-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/dbus/libdbus-1-3_1.12.20-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/dbus/libdbus-1-dev_1.12.20-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.46.2-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/e2fsprogs/libcom-err2_1.46.2-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/elfutils/libelf1_0.185-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/elfutils/libelf-dev_0.185-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/expat/libexpat1_2.2.10-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/expat/libexpat1-dev_2.2.10-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/flac/libflac8_1.3.3-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/flac/libflac-dev_1.3.3-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-4.2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fontconfig/libfontconfig-dev_2.13.1-4.2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/freetype/libfreetype6_2.10.4+dfsg-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/freetype/libfreetype-dev_2.10.4+dfsg-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fribidi/libfribidi0_1.0.8-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fribidi/libfribidi-dev_1.0.8-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-10/libgcc-10-dev_10.2.1-6_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-10/libstdc++-10-dev_10.2.1-6_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libasan6_11.2.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libatomic1_11.2.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libgomp1_11.2.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libitm1_11.2.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/liblsan0_11.2.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libstdc++6_11.2.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libtsan0_11.2.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libubsan1_11.2.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-6/libgcc1_6.3.0-18+deb9u1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-0_2.42.6+dfsg-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-dev_2.42.6+dfsg-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glib2.0/libglib2.0-0_2.68.3-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glib2.0/libglib2.0-dev_2.68.3-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glibc/libc6_2.31-16_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glibc/libc6-dev_2.31-16_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls28-dev_3.7.1-5_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls30_3.7.1-5_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls-dane0_3.7.1-5_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls-openssl27_3.7.1-5_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutlsxx28_3.7.1-5_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.4+dfsg1-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.4+dfsg1-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphite2/libgraphite2-3_1.3.14-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphite2/libgraphite2-dev_1.3.14-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.33-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.30-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.30-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk4/libgtk-4-1_4.3.1+ds-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk4/libgtk-4-dev_4.3.1+ds-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz0b_2.7.4-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.7.4-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.7.4-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.7.4-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/i/icu/libicu67_67.1-7_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/j/jbigkit/libjbig-dev_2.1-3.1+b2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.6.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/keyutils/libkeyutils1_1.6.1-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/krb5-multidev_1.18.3-6_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libgssrpc4_1.18.3-6_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libk5crypto3_1.18.3-6_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkadm5clnt-mit12_1.18.3-6_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkadm5srv-mit12_1.18.3-6_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkdb5-10_1.18.3-6_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkrb5-3_1.18.3-6_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkrb5-dev_1.18.3-6_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkrb5support0_1.18.3-6_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator1_0.4.92-8_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-8_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-8_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-8_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libb/libbsd/libbsd0_0.11.3-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcap2/libcap2_2.44-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcap2/libcap-dev_2.44-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2.2+b1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcloudproviders/libcloudproviders0_0.3.0-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdatrie/libdatrie1_0.2.13-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdatrie/libdatrie-dev_0.2.13-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr492+repack1-2+b1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr492+repack1-2+b1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr492+repack1-2+b1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr492+repack1-2+b1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdeflate/libdeflate0_1.7-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdeflate/libdeflate-dev_1.7-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm2_2.4.104-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.104-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-dev_2.4.104-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-etnaviv1_2.4.104-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-freedreno1_2.4.104-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.104-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.104-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-tegra0_2.4.104-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libepoxy/libepoxy0_1.5.8-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.8-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libevdev/libevdev2_1.11.0+dfsg-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libevdev/libevdev-dev_1.11.0+dfsg-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libevent/libevent-2.1-7_2.1.12-stable-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi6_3.2.1-9_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi7_3.3-6_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi8_3.4.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi-dev_3.3-6_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.7-6_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.7-6_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libegl1_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libegl-dev_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgl1_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgl-dev_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgles1_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgles2_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgles-dev_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglvnd0_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglvnd-dev_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglx0_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglx-dev_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libopengl0_1.3.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgpg-error/libgpg-error0_1.38-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.38-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgudev/libgudev-1.0-0_234-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libice/libice6_1.0.10-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libidn2/libidn2-0_2.3.2-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libidn/libidn11_1.33-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libindicator/libindicator3-7_0.5.0-4_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libindicator/libindicator7_0.5.0-4_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libinput/libinput10_1.16.4-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libinput/libinput-dev_1.16.4-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.0.6-4_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_2.0.6-4_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjsoncpp/libjsoncpp24_1.9.4-4_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.9.4-4_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libm/libmd/libmd0_1.0.3-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libn/libnsl/libnsl2_1.3.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b10_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libo/libogg/libogg0_1.3.4-0.1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libo/libogg/libogg-dev_1.3.4-0.1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpciaccess/libpciaccess0_0.16-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpsl/libpsl5_0.21.0-1.2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1.1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libselinux/libselinux1_3.1-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libselinux/libselinux1-dev_3.1-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsepol/libsepol1_3.1-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsepol/libsepol1-dev_3.1-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsm/libsm6_1.2.3-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsndfile/libsndfile1_1.0.31-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.72.0-4_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.72.0-4_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libssh2/libssh2-1_1.9.0-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libthai/libthai0_0.1.28-4_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libthai/libthai0_0.1.28-4_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libthai/libthai-dev_0.1.28-4_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libtirpc/libtirpc3_1.3.2-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libtool/libltdl7_2.4.6-15_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libu/libunistring/libunistring2_0.9.10-6_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libu/libutempter/libutempter0_1.2.1-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libu/libutempter/libutempter-dev_1.2.1-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva2_2.12.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-dev_2.12.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-drm2_2.12.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-glx2_2.12.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-wayland2_2.12.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-x11-2_2.12.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libvorbis/libvorbis0a_1.3.7-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.7-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwacom/libwacom2_1.8-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebp6_0.6.1-2.1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2.1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2.1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2.1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-6_1.7.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-dev_1.7.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-xcb1_1.7.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-xcb-dev_1.7.2-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxau/libxau6_1.0.9-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxau/libxau-dev_1.0.9-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb1_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb1-dev_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri2-0_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri3-0_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri3-dev_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-glx0_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-present0_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-present-dev_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-render0_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-render0-dev_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-shm0_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-sync1_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-xfixes0_1.14-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.5-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.5-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxext/libxext6_1.3.3-1.1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxext/libxext-dev_1.3.3-1.1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxi/libxi6_1.7.10-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxi/libxi-dev_1.7.10-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxkbcommon/libxkbcommon0_1.0.3-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_1.0.3-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxml2/libxml2_2.9.10+dfsg-6.7_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxml2/libxml2-dev_2.9.10+dfsg-6.7_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxshmfence/libxshmfence-dev_1.3-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxslt/libxslt1.1_1.1.34-4_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxslt/libxslt1-dev_1.1.34-4_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxss/libxss1_1.2.3-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxt/libxt6_1.2.0-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxt/libxt-dev_1.2.0-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libz/libzstd/libzstd1_1.4.8+dfsg-2.1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/lcms2/liblcms2-2_2.12~rc1-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/linux/linux-libc-dev_5.10.46-4_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/lz4/liblz4-1_1.9.3-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/lzo2/liblzo2-2_2.10-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libegl1-mesa_20.3.5-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libegl1-mesa-dev_20.3.5-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgbm1_20.3.5-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgbm-dev_20.3.5-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgl1-mesa-dev_20.3.5-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgl1-mesa-glx_20.3.5-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libglapi-mesa_20.3.5-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libwayland-egl1-mesa_20.3.5-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/mesa-common-dev_20.3.5-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/minizip/libminizip1_1.1-8+b1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mtdev/libmtdev1_1.1.6-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libncurses6_6.2+20201114-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libncurses-dev_6.2+20201114-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libncursesw6_6.2+20201114-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libtinfo6_6.2+20201114-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nettle/libhogweed6_3.7.3-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nettle/libnettle8_3.7.3-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nghttp2/libnghttp2-14_1.43.0-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nspr/libnspr4_4.32-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nspr/libnspr4-dev_4.32-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nss/libnss3_3.68-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nss/libnss3-dev_3.68-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/openldap/libldap-2.4-2_2.4.57+dfsg-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/openssl/libssl1.1_1.1.1k-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/openssl/libssl-dev_1.1.1k-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/opus/libopus0_1.3.1-0.1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/opus/libopus-dev_1.3.1-0.1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/p11-kit/libp11-kit0_0.23.22-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pam/libpam0g_1.4.0-9_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pam/libpam0g-dev_1.4.0-9_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpango-1.0-0_1.46.2-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpango1.0-dev_1.46.2-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.46.2-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.46.2-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.46.2-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5.1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pciutils/libpci3_3.7.0-5_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pciutils/libpci-dev_3.7.0-5_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-16-0_10.36-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-32-0_10.36-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-8-0_10.36-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-dev_10.36-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-posix0_10.22-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-posix2_10.36-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre16-3_8.39-13_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre32-3_8.39-13_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre3_8.39-13_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre3-dev_8.39-13_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-13_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pipewire/libpipewire-0.3-0_0.3.33-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pipewire/libpipewire-0.3-dev_0.3.33-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pipewire/libspa-0.2-dev_0.3.33-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pixman/libpixman-1-0_0.40.0-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pixman/libpixman-1-dev_0.40.0-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pulseaudio/libpulse0_14.2-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pulseaudio/libpulse-dev_14.2-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_14.2-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/r/re2/libre2-9_20210801+dfsg-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/r/re2/libre2-dev_20210801+dfsg-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2+b2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/shared-mime-info/shared-mime-info_2.0-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/snappy/libsnappy1v5_1.1.8-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/snappy/libsnappy-dev_1.1.8-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/speech-dispatcher/libspeechd2_0.10.2-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.10.2-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/sqlite3/libsqlite3-0_3.34.1-3_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/systemd/libsystemd0_247.9-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/systemd/libudev1_247.9-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/systemd/libudev-dev_247.9-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-31_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tiff/libtiff5_4.2.0-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tiff/libtiff-dev_4.2.0-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tiff/libtiffxx5_4.2.0-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/unbound/libunbound8_1.13.1-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libblkid1_2.36.1-8_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libblkid-dev_2.36.1-8_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libmount1_2.36.1-8_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libmount-dev_2.36.1-8_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libuuid1_2.36.1-8_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/uuid-dev_2.36.1-8_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/v/valgrind/valgrind_3.16.1-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/v/vulkan-loader/libvulkan1_1.2.162.0-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/v/vulkan-loader/libvulkan-dev_1.2.162.0-1_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-client0_1.19.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-cursor0_1.19.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-dev_1.19.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-egl1_1.19.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-server0_1.19.0-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland-protocols/wayland-protocols_1.20-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/x11proto-composite/x11proto-composite-dev_0.4.2-2_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/x11proto-damage/x11proto-damage-dev_1.2.1-2_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/x11proto-fixes/x11proto-fixes-dev_5.0-2_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xft/libxft2_2.3.2-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xft/libxft-dev_2.3.2-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-input-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-kb-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-randr-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-record-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-render-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-xext-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-xinerama-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xz-utils/liblzma5_5.2.5-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2_arm64.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-2_arm64.deb diff --git a/build/linux/sysroot_scripts/generated_package_lists/sid.armel b/build/linux/sysroot_scripts/generated_package_lists/sid.armel deleted file mode 100644 index ad8d0b7..0000000 --- a/build/linux/sysroot_scripts/generated_package_lists/sid.armel +++ /dev/null @@ -1,372 +0,0 @@ -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/alsa-lib/libasound2_1.2.5.1-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/alsa-lib/libasound2-dev_1.2.5.1-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/atk1.0/libatk1.0-0_2.36.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/atk1.0/libatk1.0-dev_2.36.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.38.0-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.38.0-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.40.3-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.40.3-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/attr/libattr1_2.4.48-6_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/audit/libaudit1_3.0.5-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/avahi/libavahi-client3_0.8-5_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/avahi/libavahi-common3_0.8-5_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/bluez/libbluetooth3_5.55-3.1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/bluez/libbluetooth-dev_5.55-3.1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/brotli/libbrotli1_1.0.9-2+b2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/brotli/libbrotli-dev_1.0.9-2+b2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo2_1.16.0-5_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo2-dev_1.16.0-5_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-5_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-5_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/colord/libcolord2_1.4.5-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcups2_2.3.3op2-3+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcups2-dev_2.3.3op2-3+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcupsimage2_2.3.3op2-3+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcupsimage2-dev_2.3.3op2-3+deb11u1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/curl/libcurl3-gnutls_7.74.0-1.3+b1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/curl/libcurl4-gnutls-dev_7.74.0-1.3+b1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.27+dfsg-2.1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.8_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.112-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/dbus/libdbus-1-3_1.12.20-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/dbus/libdbus-1-dev_1.12.20-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.46.2-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/e2fsprogs/libcom-err2_1.46.2-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/elfutils/libelf1_0.185-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/elfutils/libelf-dev_0.185-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/expat/libexpat1_2.2.10-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/expat/libexpat1-dev_2.2.10-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/flac/libflac8_1.3.3-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/flac/libflac-dev_1.3.3-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-4.2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fontconfig/libfontconfig-dev_2.13.1-4.2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/freetype/libfreetype6_2.10.4+dfsg-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/freetype/libfreetype-dev_2.10.4+dfsg-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fribidi/libfribidi0_1.0.8-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fribidi/libfribidi-dev_1.0.8-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-10/libgcc-10-dev_10.2.1-6_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-10/libstdc++-10-dev_10.2.1-6_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libasan6_11.2.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libatomic1_11.2.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libgomp1_11.2.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libstdc++6_11.2.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libubsan1_11.2.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-6/libgcc1_6.3.0-18+deb9u1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-0_2.42.6+dfsg-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-dev_2.42.6+dfsg-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glib2.0/libglib2.0-0_2.68.3-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glib2.0/libglib2.0-dev_2.68.3-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glibc/libc6_2.31-16_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glibc/libc6-dev_2.31-16_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls28-dev_3.7.1-5_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls30_3.7.1-5_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls-dane0_3.7.1-5_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls-openssl27_3.7.1-5_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutlsxx28_3.7.1-5_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.4+dfsg1-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.4+dfsg1-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphite2/libgraphite2-3_1.3.14-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphite2/libgraphite2-dev_1.3.14-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.33-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.30-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.30-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk4/libgtk-4-1_4.3.1+ds-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk4/libgtk-4-dev_4.3.1+ds-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz0b_2.7.4-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.7.4-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.7.4-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.7.4-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/i/icu/libicu67_67.1-7_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/j/jbigkit/libjbig-dev_2.1-3.1+b2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.6.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/keyutils/libkeyutils1_1.6.1-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/krb5-multidev_1.18.3-6_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libgssrpc4_1.18.3-6_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libk5crypto3_1.18.3-6_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkadm5clnt-mit12_1.18.3-6_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkadm5srv-mit12_1.18.3-6_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkdb5-10_1.18.3-6_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkrb5-3_1.18.3-6_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkrb5-dev_1.18.3-6_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkrb5support0_1.18.3-6_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator1_0.4.92-8_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-8_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-8_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-8_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libb/libbsd/libbsd0_0.11.3-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcap2/libcap2_2.44-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcap2/libcap-dev_2.44-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2.2+b1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcloudproviders/libcloudproviders0_0.3.0-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdatrie/libdatrie1_0.2.13-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdatrie/libdatrie-dev_0.2.13-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr492+repack1-2+b1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr492+repack1-2+b1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr492+repack1-2+b1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr492+repack1-2+b1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdeflate/libdeflate0_1.7-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdeflate/libdeflate-dev_1.7-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm2_2.4.104-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.104-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-dev_2.4.104-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-exynos1_2.4.104-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-freedreno1_2.4.104-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.104-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-omap1_2.4.104-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.104-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-tegra0_2.4.104-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libepoxy/libepoxy0_1.5.8-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.8-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libevdev/libevdev2_1.11.0+dfsg-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libevdev/libevdev-dev_1.11.0+dfsg-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libevent/libevent-2.1-7_2.1.12-stable-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi6_3.2.1-9_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi7_3.3-6_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi8_3.4.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi-dev_3.3-6_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.7-6_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.7-6_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libegl1_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libegl-dev_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgl1_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgl-dev_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgles1_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgles2_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgles-dev_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglvnd0_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglvnd-dev_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglx0_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglx-dev_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libopengl0_1.3.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgpg-error/libgpg-error0_1.38-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.38-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgudev/libgudev-1.0-0_234-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libice/libice6_1.0.10-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libidn2/libidn2-0_2.3.2-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libidn/libidn11_1.33-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libindicator/libindicator3-7_0.5.0-4_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libindicator/libindicator7_0.5.0-4_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libinput/libinput10_1.16.4-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libinput/libinput-dev_1.16.4-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.0.6-4_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_2.0.6-4_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjsoncpp/libjsoncpp24_1.9.4-4_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.9.4-4_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libm/libmd/libmd0_1.0.3-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libn/libnsl/libnsl2_1.3.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b10_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libo/libogg/libogg0_1.3.4-0.1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libo/libogg/libogg-dev_1.3.4-0.1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpciaccess/libpciaccess0_0.16-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpsl/libpsl5_0.21.0-1.2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1.1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libselinux/libselinux1_3.1-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libselinux/libselinux1-dev_3.1-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsepol/libsepol1_3.1-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsepol/libsepol1-dev_3.1-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsm/libsm6_1.2.3-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsndfile/libsndfile1_1.0.31-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.72.0-4_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.72.0-4_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libssh2/libssh2-1_1.9.0-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libthai/libthai0_0.1.28-4_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libthai/libthai-dev_0.1.28-4_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libtirpc/libtirpc3_1.3.2-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libtool/libltdl7_2.4.6-15_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libu/libunistring/libunistring2_0.9.10-6_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libu/libutempter/libutempter0_1.2.1-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libu/libutempter/libutempter-dev_1.2.1-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva2_2.12.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-dev_2.12.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-drm2_2.12.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-glx2_2.12.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-wayland2_2.12.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-x11-2_2.12.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libvorbis/libvorbis0a_1.3.7-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.7-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwacom/libwacom2_1.8-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebp6_0.6.1-2.1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2.1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2.1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2.1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-6_1.7.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-dev_1.7.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-xcb1_1.7.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-xcb-dev_1.7.2-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxau/libxau6_1.0.9-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxau/libxau-dev_1.0.9-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb1_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb1-dev_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri2-0_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri3-0_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri3-dev_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-glx0_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-present0_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-present-dev_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-render0_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-render0-dev_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-shm0_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-sync1_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-xfixes0_1.14-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.5-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.5-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxext/libxext6_1.3.3-1.1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxext/libxext-dev_1.3.3-1.1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxi/libxi6_1.7.10-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxi/libxi-dev_1.7.10-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxkbcommon/libxkbcommon0_1.0.3-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_1.0.3-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxml2/libxml2_2.9.10+dfsg-6.7_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxml2/libxml2-dev_2.9.10+dfsg-6.7_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxshmfence/libxshmfence-dev_1.3-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxslt/libxslt1.1_1.1.34-4_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxslt/libxslt1-dev_1.1.34-4_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxss/libxss1_1.2.3-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxt/libxt6_1.2.0-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxt/libxt-dev_1.2.0-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libz/libzstd/libzstd1_1.4.8+dfsg-2.1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/lcms2/liblcms2-2_2.12~rc1-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/linux/linux-libc-dev_5.10.46-4_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/lz4/liblz4-1_1.9.3-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/lzo2/liblzo2-2_2.10-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libegl1-mesa_20.3.5-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libegl1-mesa-dev_20.3.5-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgbm1_20.3.5-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgbm-dev_20.3.5-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgl1-mesa-dev_20.3.5-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgl1-mesa-glx_20.3.5-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libglapi-mesa_20.3.5-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libwayland-egl1-mesa_20.3.5-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/mesa-common-dev_20.3.5-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/minizip/libminizip1_1.1-8+b1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mtdev/libmtdev1_1.1.6-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libncurses6_6.2+20201114-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libncurses-dev_6.2+20201114-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libncursesw6_6.2+20201114-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libtinfo6_6.2+20201114-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nettle/libhogweed6_3.7.3-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nettle/libnettle8_3.7.3-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nghttp2/libnghttp2-14_1.43.0-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nspr/libnspr4_4.32-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nspr/libnspr4-dev_4.32-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nss/libnss3_3.68-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nss/libnss3-dev_3.68-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/openldap/libldap-2.4-2_2.4.57+dfsg-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/openssl/libssl1.1_1.1.1k-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/openssl/libssl-dev_1.1.1k-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/opus/libopus0_1.3.1-0.1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/opus/libopus-dev_1.3.1-0.1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/p11-kit/libp11-kit0_0.23.22-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pam/libpam0g_1.4.0-9_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pam/libpam0g-dev_1.4.0-9_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpango-1.0-0_1.46.2-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpango1.0-dev_1.46.2-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.46.2-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.46.2-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.46.2-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5.1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pciutils/libpci3_3.7.0-5_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pciutils/libpci-dev_3.7.0-5_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-16-0_10.36-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-32-0_10.36-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-8-0_10.36-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-dev_10.36-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-posix0_10.22-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-posix2_10.36-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre16-3_8.39-13_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre32-3_8.39-13_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre3_8.39-13_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre3-dev_8.39-13_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-13_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pipewire/libpipewire-0.3-0_0.3.33-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pipewire/libpipewire-0.3-dev_0.3.33-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pipewire/libspa-0.2-dev_0.3.33-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pixman/libpixman-1-0_0.40.0-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pixman/libpixman-1-dev_0.40.0-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pulseaudio/libpulse0_14.2-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pulseaudio/libpulse-dev_14.2-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_14.2-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/r/re2/libre2-9_20210801+dfsg-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/r/re2/libre2-dev_20210801+dfsg-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2+b2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/shared-mime-info/shared-mime-info_2.0-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/snappy/libsnappy1v5_1.1.8-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/snappy/libsnappy-dev_1.1.8-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/speech-dispatcher/libspeechd2_0.10.2-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.10.2-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/sqlite3/libsqlite3-0_3.34.1-3_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/systemd/libsystemd0_247.9-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/systemd/libudev1_247.9-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/systemd/libudev-dev_247.9-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-31_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tiff/libtiff5_4.2.0-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tiff/libtiff-dev_4.2.0-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tiff/libtiffxx5_4.2.0-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/unbound/libunbound8_1.13.1-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libblkid1_2.36.1-8_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libblkid-dev_2.36.1-8_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libmount1_2.36.1-8_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libmount-dev_2.36.1-8_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libuuid1_2.36.1-8_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/uuid-dev_2.36.1-8_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/v/vulkan-loader/libvulkan1_1.2.162.0-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/v/vulkan-loader/libvulkan-dev_1.2.162.0-1_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-client0_1.19.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-cursor0_1.19.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-dev_1.19.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-egl1_1.19.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-server0_1.19.0-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland-protocols/wayland-protocols_1.20-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/x11proto-composite/x11proto-composite-dev_0.4.2-2_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/x11proto-damage/x11proto-damage-dev_1.2.1-2_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/x11proto-fixes/x11proto-fixes-dev_5.0-2_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xft/libxft2_2.3.2-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xft/libxft-dev_2.3.2-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-input-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-kb-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-randr-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-record-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-render-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-xext-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-xinerama-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xz-utils/liblzma5_5.2.5-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2_armel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-2_armel.deb diff --git a/build/linux/sysroot_scripts/generated_package_lists/sid.i386 b/build/linux/sysroot_scripts/generated_package_lists/sid.i386 deleted file mode 100644 index d8c0e9b..0000000 --- a/build/linux/sysroot_scripts/generated_package_lists/sid.i386 +++ /dev/null @@ -1,374 +0,0 @@ -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/alsa-lib/libasound2_1.2.5.1-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/alsa-lib/libasound2-dev_1.2.5.1-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/atk1.0/libatk1.0-0_2.36.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/atk1.0/libatk1.0-dev_2.36.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.38.0-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.38.0-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.40.3-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.40.3-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/attr/libattr1_2.4.48-6_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/audit/libaudit1_3.0.5-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/avahi/libavahi-client3_0.8-5_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/avahi/libavahi-common3_0.8-5_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/bluez/libbluetooth3_5.55-3.1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/bluez/libbluetooth-dev_5.55-3.1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/brotli/libbrotli1_1.0.9-2+b2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/brotli/libbrotli-dev_1.0.9-2+b2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo2_1.16.0-5_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo2-dev_1.16.0-5_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-5_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-5_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/colord/libcolord2_1.4.5-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcups2_2.3.3op2-3+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcups2-dev_2.3.3op2-3+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcupsimage2_2.3.3op2-3+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcupsimage2-dev_2.3.3op2-3+deb11u1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/curl/libcurl3-gnutls_7.74.0-1.3+b1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/curl/libcurl4-gnutls-dev_7.74.0-1.3+b1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.27+dfsg-2.1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.8_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.112-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/dbus/libdbus-1-3_1.12.20-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/dbus/libdbus-1-dev_1.12.20-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.46.2-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/e2fsprogs/libcom-err2_1.46.2-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/elfutils/libelf1_0.185-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/elfutils/libelf-dev_0.185-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/expat/libexpat1_2.2.10-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/expat/libexpat1-dev_2.2.10-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/flac/libflac8_1.3.3-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/flac/libflac-dev_1.3.3-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-4.2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fontconfig/libfontconfig-dev_2.13.1-4.2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/freetype/libfreetype6_2.10.4+dfsg-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/freetype/libfreetype-dev_2.10.4+dfsg-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fribidi/libfribidi0_1.0.8-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fribidi/libfribidi-dev_1.0.8-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-10/libgcc-10-dev_10.2.1-6_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-10/libstdc++-10-dev_10.2.1-6_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libasan6_11.2.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libatomic1_11.2.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libgomp1_11.2.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libitm1_11.2.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libquadmath0_11.2.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libstdc++6_11.2.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-11/libubsan1_11.2.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-6/libcilkrts5_6.3.0-18+deb9u1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-6/libgcc1_6.3.0-18+deb9u1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-6/libmpx2_6.3.0-18+deb9u1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-0_2.42.6+dfsg-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-dev_2.42.6+dfsg-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glib2.0/libglib2.0-0_2.68.3-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glib2.0/libglib2.0-dev_2.68.3-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glibc/libc6_2.31-16_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glibc/libc6-dev_2.31-16_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls28-dev_3.7.1-5_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls30_3.7.1-5_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls-dane0_3.7.1-5_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls-openssl27_3.7.1-5_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutlsxx28_3.7.1-5_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.4+dfsg1-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.4+dfsg1-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphite2/libgraphite2-3_1.3.14-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphite2/libgraphite2-dev_1.3.14-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.33-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.30-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.30-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk4/libgtk-4-1_4.3.1+ds-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk4/libgtk-4-dev_4.3.1+ds-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz0b_2.7.4-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.7.4-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.7.4-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.7.4-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/i/icu/libicu67_67.1-7_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/j/jbigkit/libjbig-dev_2.1-3.1+b2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.6.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/keyutils/libkeyutils1_1.6.1-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/krb5-multidev_1.18.3-6_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libgssrpc4_1.18.3-6_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libk5crypto3_1.18.3-6_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkadm5clnt-mit12_1.18.3-6_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkadm5srv-mit12_1.18.3-6_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkdb5-10_1.18.3-6_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkrb5-3_1.18.3-6_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkrb5-dev_1.18.3-6_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkrb5support0_1.18.3-6_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator1_0.4.92-8_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-8_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-8_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-8_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libb/libbsd/libbsd0_0.11.3-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcap2/libcap2_2.44-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcap2/libcap-dev_2.44-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2.2+b1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcloudproviders/libcloudproviders0_0.3.0-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdatrie/libdatrie1_0.2.13-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdatrie/libdatrie-dev_0.2.13-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr492+repack1-2+b1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr492+repack1-2+b1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr492+repack1-2+b1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr492+repack1-2+b1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdeflate/libdeflate0_1.7-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdeflate/libdeflate-dev_1.7-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm2_2.4.104-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.104-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-dev_2.4.104-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-intel1_2.4.104-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.104-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.104-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libepoxy/libepoxy0_1.5.8-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.8-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libevdev/libevdev2_1.11.0+dfsg-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libevdev/libevdev-dev_1.11.0+dfsg-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libevent/libevent-2.1-7_2.1.12-stable-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi6_3.2.1-9_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi7_3.3-6_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi8_3.4.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi-dev_3.3-6_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.7-6_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.7-6_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libegl1_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libegl-dev_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgl1_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgl-dev_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgles1_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgles2_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgles-dev_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglvnd0_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglvnd-dev_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglx0_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglx-dev_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libopengl0_1.3.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgpg-error/libgpg-error0_1.38-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.38-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgudev/libgudev-1.0-0_234-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libice/libice6_1.0.10-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libidn2/libidn2-0_2.3.2-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libidn/libidn11_1.33-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libindicator/libindicator3-7_0.5.0-4_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libindicator/libindicator7_0.5.0-4_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libinput/libinput10_1.16.4-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libinput/libinput-dev_1.16.4-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.0.6-4_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_2.0.6-4_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjsoncpp/libjsoncpp24_1.9.4-4_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.9.4-4_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libm/libmd/libmd0_1.0.3-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libn/libnsl/libnsl2_1.3.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b10_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libo/libogg/libogg0_1.3.4-0.1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libo/libogg/libogg-dev_1.3.4-0.1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpciaccess/libpciaccess0_0.16-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpsl/libpsl5_0.21.0-1.2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1.1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libselinux/libselinux1_3.1-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libselinux/libselinux1-dev_3.1-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsepol/libsepol1_3.1-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsepol/libsepol1-dev_3.1-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsm/libsm6_1.2.3-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsndfile/libsndfile1_1.0.31-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.72.0-4_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.72.0-4_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libssh2/libssh2-1_1.9.0-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libthai/libthai0_0.1.28-4_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libthai/libthai-dev_0.1.28-4_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libtirpc/libtirpc3_1.3.2-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libtool/libltdl7_2.4.6-15_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libu/libunistring/libunistring2_0.9.10-6_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libu/libutempter/libutempter0_1.2.1-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libu/libutempter/libutempter-dev_1.2.1-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva2_2.12.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-dev_2.12.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-drm2_2.12.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-glx2_2.12.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-wayland2_2.12.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-x11-2_2.12.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libvorbis/libvorbis0a_1.3.7-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.7-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwacom/libwacom2_1.8-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebp6_0.6.1-2.1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2.1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2.1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2.1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-6_1.7.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-dev_1.7.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-xcb1_1.7.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-xcb-dev_1.7.2-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxau/libxau6_1.0.9-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxau/libxau-dev_1.0.9-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb1_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb1-dev_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri2-0_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri3-0_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri3-dev_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-glx0_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-present0_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-present-dev_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-render0_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-render0-dev_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-shm0_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-sync1_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-xfixes0_1.14-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.5-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.5-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxext/libxext6_1.3.3-1.1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxext/libxext-dev_1.3.3-1.1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxi/libxi6_1.7.10-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxi/libxi-dev_1.7.10-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxkbcommon/libxkbcommon0_1.0.3-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_1.0.3-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxml2/libxml2_2.9.10+dfsg-6.7_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxml2/libxml2-dev_2.9.10+dfsg-6.7_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxshmfence/libxshmfence-dev_1.3-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxslt/libxslt1.1_1.1.34-4_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxslt/libxslt1-dev_1.1.34-4_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxss/libxss1_1.2.3-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxt/libxt6_1.2.0-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxt/libxt-dev_1.2.0-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libz/libzstd/libzstd1_1.4.8+dfsg-2.1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/lcms2/liblcms2-2_2.12~rc1-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/linux/linux-libc-dev_5.10.46-4_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/lz4/liblz4-1_1.9.3-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/lzo2/liblzo2-2_2.10-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libegl1-mesa_20.3.5-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libegl1-mesa-dev_20.3.5-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgbm1_20.3.5-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgbm-dev_20.3.5-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgl1-mesa-dev_20.3.5-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgl1-mesa-glx_20.3.5-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libglapi-mesa_20.3.5-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libwayland-egl1-mesa_20.3.5-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/mesa-common-dev_20.3.5-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/minizip/libminizip1_1.1-8+b1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mtdev/libmtdev1_1.1.6-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libncurses6_6.2+20201114-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libncurses-dev_6.2+20201114-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libncursesw6_6.2+20201114-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libtinfo6_6.2+20201114-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nettle/libhogweed6_3.7.3-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nettle/libnettle8_3.7.3-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nghttp2/libnghttp2-14_1.43.0-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nspr/libnspr4_4.32-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nspr/libnspr4-dev_4.32-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nss/libnss3_3.68-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nss/libnss3-dev_3.68-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/openldap/libldap-2.4-2_2.4.57+dfsg-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/openssl/libssl1.1_1.1.1k-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/openssl/libssl-dev_1.1.1k-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/opus/libopus0_1.3.1-0.1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/opus/libopus-dev_1.3.1-0.1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/p11-kit/libp11-kit0_0.23.22-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pam/libpam0g_1.4.0-9_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pam/libpam0g-dev_1.4.0-9_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpango-1.0-0_1.46.2-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpango1.0-dev_1.46.2-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.46.2-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.46.2-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.46.2-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5.1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pciutils/libpci3_3.7.0-5_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pciutils/libpci-dev_3.7.0-5_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-16-0_10.36-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-32-0_10.36-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-8-0_10.36-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-dev_10.36-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-posix0_10.22-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-posix2_10.36-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre16-3_8.39-13_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre32-3_8.39-13_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre3_8.39-13_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre3-dev_8.39-13_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-13_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pipewire/libpipewire-0.3-0_0.3.33-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pipewire/libpipewire-0.3-dev_0.3.33-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pipewire/libspa-0.2-dev_0.3.33-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pixman/libpixman-1-0_0.40.0-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pixman/libpixman-1-dev_0.40.0-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pulseaudio/libpulse0_14.2-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pulseaudio/libpulse-dev_14.2-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_14.2-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/r/re2/libre2-9_20210801+dfsg-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/r/re2/libre2-dev_20210801+dfsg-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2+b2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/shared-mime-info/shared-mime-info_2.0-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/snappy/libsnappy1v5_1.1.8-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/snappy/libsnappy-dev_1.1.8-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/speech-dispatcher/libspeechd2_0.10.2-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.10.2-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/sqlite3/libsqlite3-0_3.34.1-3_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/systemd/libsystemd0_247.9-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/systemd/libudev1_247.9-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/systemd/libudev-dev_247.9-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-31_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tiff/libtiff5_4.2.0-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tiff/libtiff-dev_4.2.0-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tiff/libtiffxx5_4.2.0-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/unbound/libunbound8_1.13.1-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libblkid1_2.36.1-8_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libblkid-dev_2.36.1-8_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libmount1_2.36.1-8_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libmount-dev_2.36.1-8_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libuuid1_2.36.1-8_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/uuid-dev_2.36.1-8_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/v/valgrind/valgrind_3.16.1-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/v/vulkan-loader/libvulkan1_1.2.162.0-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/v/vulkan-loader/libvulkan-dev_1.2.162.0-1_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-client0_1.19.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-cursor0_1.19.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-dev_1.19.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-egl1_1.19.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-server0_1.19.0-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland-protocols/wayland-protocols_1.20-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/x11proto-composite/x11proto-composite-dev_0.4.2-2_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/x11proto-damage/x11proto-damage-dev_1.2.1-2_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/x11proto-fixes/x11proto-fixes-dev_5.0-2_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xft/libxft2_2.3.2-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xft/libxft-dev_2.3.2-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-input-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-kb-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-randr-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-record-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-render-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-xext-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-xinerama-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xz-utils/liblzma5_5.2.5-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2_i386.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-2_i386.deb diff --git a/build/linux/sysroot_scripts/generated_package_lists/sid.mips64el b/build/linux/sysroot_scripts/generated_package_lists/sid.mips64el deleted file mode 100644 index aee8097..0000000 --- a/build/linux/sysroot_scripts/generated_package_lists/sid.mips64el +++ /dev/null @@ -1,365 +0,0 @@ -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/alsa-lib/libasound2_1.2.5.1-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/alsa-lib/libasound2-dev_1.2.5.1-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/atk1.0/libatk1.0-0_2.36.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/atk1.0/libatk1.0-dev_2.36.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.38.0-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.38.0-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.40.3-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.40.3-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/attr/libattr1_2.4.48-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/audit/libaudit1_3.0.5-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/avahi/libavahi-client3_0.8-5_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/avahi/libavahi-common3_0.8-5_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/bluez/libbluetooth3_5.55-3.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/bluez/libbluetooth-dev_5.55-3.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/brotli/libbrotli1_1.0.9-2+b2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/brotli/libbrotli-dev_1.0.9-2+b2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo2_1.16.0-5_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo2-dev_1.16.0-5_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-5_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-5_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/colord/libcolord2_1.4.5-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcups2_2.3.3op2-3+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcups2-dev_2.3.3op2-3+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcupsimage2_2.3.3op2-3+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcupsimage2-dev_2.3.3op2-3+deb11u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/curl/libcurl3-gnutls_7.74.0-1.3+b1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/curl/libcurl4-gnutls-dev_7.74.0-1.3+b1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.27+dfsg-2.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.8_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.112-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/dbus/libdbus-1-3_1.12.20-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/dbus/libdbus-1-dev_1.12.20-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.46.2-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/e2fsprogs/libcom-err2_1.46.2-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/elfutils/libelf1_0.185-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/elfutils/libelf-dev_0.185-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/expat/libexpat1_2.2.10-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/expat/libexpat1-dev_2.2.10-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/flac/libflac8_1.3.3-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/flac/libflac-dev_1.3.3-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-4.2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fontconfig/libfontconfig-dev_2.13.1-4.2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/freetype/libfreetype6_2.10.4+dfsg-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/freetype/libfreetype-dev_2.10.4+dfsg-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fribidi/libfribidi0_1.0.8-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fribidi/libfribidi-dev_1.0.8-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-10/libatomic1_10.2.1-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-10/libgcc-10-dev_10.2.1-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-10/libgomp1_10.2.1-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-10/libstdc++-10-dev_10.2.1-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-10/libstdc++6_10.2.1-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-6/libgcc1_6.3.0-18+deb9u1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-0_2.42.6+dfsg-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-dev_2.42.6+dfsg-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glib2.0/libglib2.0-0_2.68.3-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glib2.0/libglib2.0-dev_2.68.3-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glibc/libc6_2.31-16_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glibc/libc6-dev_2.31-16_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls28-dev_3.7.1-5_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls30_3.7.1-5_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls-dane0_3.7.1-5_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls-openssl27_3.7.1-5_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutlsxx28_3.7.1-5_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.4+dfsg1-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.4+dfsg1-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphite2/libgraphite2-3_1.3.14-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphite2/libgraphite2-dev_1.3.14-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.33-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.30-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.30-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz0b_2.7.4-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.7.4-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.7.4-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.7.4-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/i/icu/libicu67_67.1-7_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/j/jbigkit/libjbig-dev_2.1-3.1+b2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.6.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/keyutils/libkeyutils1_1.6.1-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/krb5-multidev_1.18.3-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libgssrpc4_1.18.3-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libk5crypto3_1.18.3-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkadm5clnt-mit12_1.18.3-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkadm5srv-mit12_1.18.3-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkdb5-10_1.18.3-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkrb5-3_1.18.3-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkrb5-dev_1.18.3-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkrb5support0_1.18.3-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator1_0.4.92-8_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-8_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-8_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-8_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libb/libbsd/libbsd0_0.11.3-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcap2/libcap2_2.44-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcap2/libcap-dev_2.44-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2.2+b1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcloudproviders/libcloudproviders0_0.3.0-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdatrie/libdatrie1_0.2.13-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdatrie/libdatrie-dev_0.2.13-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr492+repack1-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr492+repack1-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr492+repack1-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr492+repack1-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdeflate/libdeflate0_1.7-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdeflate/libdeflate-dev_1.7-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm2_2.4.104-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.104-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-dev_2.4.104-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.104-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.104-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libepoxy/libepoxy0_1.5.8-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.8-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libevdev/libevdev2_1.11.0+dfsg-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libevdev/libevdev-dev_1.11.0+dfsg-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libevent/libevent-2.1-7_2.1.12-stable-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi6_3.2.1-9_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi7_3.3-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi8_3.4.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi-dev_3.3-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.7-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.7-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libegl1_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libegl-dev_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgl1_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgl-dev_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgles1_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgles2_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgles-dev_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglvnd0_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglvnd-dev_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglx0_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglx-dev_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libopengl0_1.3.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgpg-error/libgpg-error0_1.38-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.38-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgudev/libgudev-1.0-0_234-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libice/libice6_1.0.10-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libidn2/libidn2-0_2.3.2-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libidn/libidn11_1.33-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libindicator/libindicator3-7_0.5.0-4_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libindicator/libindicator7_0.5.0-4_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libinput/libinput10_1.16.4-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libinput/libinput-dev_1.16.4-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.0.6-4_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_2.0.6-4_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjsoncpp/libjsoncpp24_1.9.4-4_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.9.4-4_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libm/libmd/libmd0_1.0.3-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libn/libnsl/libnsl2_1.3.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b10_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libo/libogg/libogg0_1.3.4-0.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libo/libogg/libogg-dev_1.3.4-0.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpciaccess/libpciaccess0_0.16-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpsl/libpsl5_0.21.0-1.2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libselinux/libselinux1_3.1-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libselinux/libselinux1-dev_3.1-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsepol/libsepol1_3.1-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsepol/libsepol1-dev_3.1-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsm/libsm6_1.2.3-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsndfile/libsndfile1_1.0.31-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.72.0-4_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.72.0-4_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libssh2/libssh2-1_1.9.0-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libthai/libthai0_0.1.28-4_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libthai/libthai-dev_0.1.28-4_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libtirpc/libtirpc3_1.3.2-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libtool/libltdl7_2.4.6-15_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libu/libunistring/libunistring2_0.9.10-6_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libu/libutempter/libutempter0_1.2.1-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libu/libutempter/libutempter-dev_1.2.1-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva2_2.12.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-dev_2.12.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-drm2_2.12.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-glx2_2.12.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-wayland2_2.12.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-x11-2_2.12.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libvorbis/libvorbis0a_1.3.7-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.7-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwacom/libwacom2_1.8-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebp6_0.6.1-2.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-6_1.7.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-dev_1.7.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-xcb1_1.7.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-xcb-dev_1.7.2-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxau/libxau6_1.0.9-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxau/libxau-dev_1.0.9-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb1_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb1-dev_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri2-0_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri3-0_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri3-dev_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-glx0_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-present0_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-present-dev_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-render0_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-render0-dev_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-shm0_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-sync1_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-xfixes0_1.14-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.5-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.5-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxext/libxext6_1.3.3-1.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxext/libxext-dev_1.3.3-1.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxi/libxi6_1.7.10-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxi/libxi-dev_1.7.10-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxkbcommon/libxkbcommon0_1.0.3-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_1.0.3-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxml2/libxml2_2.9.10+dfsg-6.7_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxml2/libxml2-dev_2.9.10+dfsg-6.7_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxshmfence/libxshmfence-dev_1.3-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxslt/libxslt1.1_1.1.34-4_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxslt/libxslt1-dev_1.1.34-4_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxss/libxss1_1.2.3-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxt/libxt6_1.2.0-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxt/libxt-dev_1.2.0-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libz/libzstd/libzstd1_1.4.8+dfsg-2.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/lcms2/liblcms2-2_2.12~rc1-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/linux/linux-libc-dev_5.10.46-4_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/lz4/liblz4-1_1.9.3-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/lzo2/liblzo2-2_2.10-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libegl1-mesa_20.3.5-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libegl1-mesa-dev_20.3.5-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgbm1_20.3.5-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgbm-dev_20.3.5-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgl1-mesa-dev_20.3.5-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgl1-mesa-glx_20.3.5-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libglapi-mesa_20.3.5-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libwayland-egl1-mesa_20.3.5-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/mesa-common-dev_20.3.5-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/minizip/libminizip1_1.1-8+b1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mtdev/libmtdev1_1.1.6-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libncurses6_6.2+20201114-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libncurses-dev_6.2+20201114-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libncursesw6_6.2+20201114-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libtinfo6_6.2+20201114-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nettle/libhogweed6_3.7.3-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nettle/libnettle8_3.7.3-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nghttp2/libnghttp2-14_1.43.0-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nspr/libnspr4_4.32-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nspr/libnspr4-dev_4.32-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nss/libnss3_3.68-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nss/libnss3-dev_3.68-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/openldap/libldap-2.4-2_2.4.57+dfsg-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/openssl/libssl1.1_1.1.1k-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/openssl/libssl-dev_1.1.1k-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/opus/libopus0_1.3.1-0.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/opus/libopus-dev_1.3.1-0.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/p11-kit/libp11-kit0_0.23.22-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pam/libpam0g_1.4.0-9_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pam/libpam0g-dev_1.4.0-9_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpango-1.0-0_1.46.2-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpango1.0-dev_1.46.2-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.46.2-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.46.2-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.46.2-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5.1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pciutils/libpci3_3.7.0-5_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pciutils/libpci-dev_3.7.0-5_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-16-0_10.36-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-32-0_10.36-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-8-0_10.36-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-dev_10.36-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-posix0_10.22-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-posix2_10.36-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre16-3_8.39-13_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre32-3_8.39-13_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre3_8.39-13_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre3-dev_8.39-13_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-13_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pipewire/libpipewire-0.3-0_0.3.33-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pipewire/libpipewire-0.3-dev_0.3.33-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pipewire/libspa-0.2-dev_0.3.33-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pixman/libpixman-1-0_0.40.0-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pixman/libpixman-1-dev_0.40.0-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pulseaudio/libpulse0_14.2-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pulseaudio/libpulse-dev_14.2-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_14.2-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/r/re2/libre2-9_20210801+dfsg-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/r/re2/libre2-dev_20210801+dfsg-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2+b2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/shared-mime-info/shared-mime-info_2.0-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/snappy/libsnappy1v5_1.1.8-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/snappy/libsnappy-dev_1.1.8-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/speech-dispatcher/libspeechd2_0.10.2-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.10.2-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/sqlite3/libsqlite3-0_3.34.1-3_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/systemd/libsystemd0_247.9-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/systemd/libudev1_247.9-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/systemd/libudev-dev_247.9-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-31_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tiff/libtiff5_4.2.0-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tiff/libtiff-dev_4.2.0-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tiff/libtiffxx5_4.2.0-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/unbound/libunbound8_1.13.1-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libblkid1_2.36.1-8_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libblkid-dev_2.36.1-8_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libmount1_2.36.1-8_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libmount-dev_2.36.1-8_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libuuid1_2.36.1-8_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/uuid-dev_2.36.1-8_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/v/valgrind/valgrind_3.16.1-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/v/vulkan-loader/libvulkan1_1.2.162.0-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/v/vulkan-loader/libvulkan-dev_1.2.162.0-1_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-client0_1.19.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-cursor0_1.19.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-dev_1.19.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-egl1_1.19.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-server0_1.19.0-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland-protocols/wayland-protocols_1.20-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/x11proto-composite/x11proto-composite-dev_0.4.2-2_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/x11proto-damage/x11proto-damage-dev_1.2.1-2_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/x11proto-fixes/x11proto-fixes-dev_5.0-2_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xft/libxft2_2.3.2-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xft/libxft-dev_2.3.2-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-input-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-kb-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-randr-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-record-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-render-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-xext-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-xinerama-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xz-utils/liblzma5_5.2.5-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2_mips64el.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-2_mips64el.deb diff --git a/build/linux/sysroot_scripts/generated_package_lists/sid.mipsel b/build/linux/sysroot_scripts/generated_package_lists/sid.mipsel deleted file mode 100644 index 626b7f2..0000000 --- a/build/linux/sysroot_scripts/generated_package_lists/sid.mipsel +++ /dev/null @@ -1,364 +0,0 @@ -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/alsa-lib/libasound2_1.2.5.1-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/alsa-lib/libasound2-dev_1.2.5.1-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/atk1.0/libatk1.0-0_2.36.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/atk1.0/libatk1.0-dev_2.36.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.38.0-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.38.0-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-core/libatspi2.0-0_2.40.3-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/at-spi2-core/libatspi2.0-dev_2.40.3-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/attr/libattr1_2.4.48-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/audit/libaudit1_3.0.5-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/avahi/libavahi-client3_0.8-5_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/a/avahi/libavahi-common3_0.8-5_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/bluez/libbluetooth3_5.55-3.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/bluez/libbluetooth-dev_5.55-3.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/brotli/libbrotli1_1.0.9-2+b2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/b/brotli/libbrotli-dev_1.0.9-2+b2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo2_1.16.0-5_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo2-dev_1.16.0-5_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo-gobject2_1.16.0-5_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cairo/libcairo-script-interpreter2_1.16.0-5_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/colord/libcolord2_1.4.5-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcups2_2.3.3op2-3+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcups2-dev_2.3.3op2-3+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcupsimage2_2.3.3op2-3+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cups/libcupsimage2-dev_2.3.3op2-3+deb11u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/curl/libcurl3-gnutls_7.74.0-1.3+b1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/curl/libcurl4-gnutls-dev_7.74.0-1.3+b1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.27+dfsg-2.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.8_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/dbus-glib/libdbus-glib-1-2_0.112-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/dbus/libdbus-1-3_1.12.20-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/d/dbus/libdbus-1-dev_1.12.20-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/e2fsprogs/comerr-dev_2.1-1.46.2-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/e2fsprogs/libcom-err2_1.46.2-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/elfutils/libelf1_0.185-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/elfutils/libelf-dev_0.185-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/expat/libexpat1_2.2.10-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/e/expat/libexpat1-dev_2.2.10-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/flac/libflac8_1.3.3-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/flac/libflac-dev_1.3.3-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fontconfig/libfontconfig1_2.13.1-4.2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fontconfig/libfontconfig-dev_2.13.1-4.2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/freetype/libfreetype6_2.10.4+dfsg-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/freetype/libfreetype-dev_2.10.4+dfsg-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fribidi/libfribidi0_1.0.8-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/f/fribidi/libfribidi-dev_1.0.8-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-10/libatomic1_10.2.1-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-10/libgcc-10-dev_10.2.1-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-10/libgomp1_10.2.1-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-10/libstdc++-10-dev_10.2.1-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-10/libstdc++6_10.2.1-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gcc-6/libgcc1_6.3.0-18+deb9u1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-0_2.42.6+dfsg-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gdk-pixbuf/libgdk-pixbuf-2.0-dev_2.42.6+dfsg-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glib2.0/libglib2.0-0_2.68.3-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glib2.0/libglib2.0-dev_2.68.3-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glibc/libc6_2.31-16_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/glibc/libc6-dev_2.31-16_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gmp/libgmp10_6.2.1+dfsg-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls28-dev_3.7.1-5_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls30_3.7.1-5_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls-dane0_3.7.1-5_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutls-openssl27_3.7.1-5_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gnutls28/libgnutlsxx28_3.7.1-5_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphene/libgraphene-1.0-0_1.10.4+dfsg1-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphene/libgraphene-1.0-dev_1.10.4+dfsg1-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphite2/libgraphite2-3_1.3.14-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/graphite2/libgraphite2-dev_1.3.14-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk+2.0/libgtk2.0-0_2.24.33-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk+3.0/libgtk-3-0_3.24.30-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/g/gtk+3.0/libgtk-3-dev_3.24.30-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz0b_2.7.4-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz-dev_2.7.4-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz-gobject0_2.7.4-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/h/harfbuzz/libharfbuzz-icu0_2.7.4-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/i/icu-le-hb/libicu-le-hb0_1.0.3+git180724-3+b2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/i/icu/libicu67_67.1-7_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/j/jbigkit/libjbig0_2.1-3.1+b2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/j/jbigkit/libjbig-dev_2.1-3.1+b2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/j/json-glib/libjson-glib-1.0-0_1.6.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/keyutils/libkeyutils1_1.6.1-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/krb5-multidev_1.18.3-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libgssapi-krb5-2_1.18.3-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libgssrpc4_1.18.3-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libk5crypto3_1.18.3-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkadm5clnt-mit12_1.18.3-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkadm5srv-mit12_1.18.3-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkdb5-10_1.18.3-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkrb5-3_1.18.3-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkrb5-dev_1.18.3-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/k/krb5/libkrb5support0_1.18.3-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator1_0.4.92-8_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator3-1_0.4.92-8_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator3-dev_0.4.92-8_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libappindicator/libappindicator-dev_0.4.92-8_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/liba/libasyncns/libasyncns0_0.8-6+b2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libb/libbsd/libbsd0_0.11.3-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcap2/libcap2_2.44-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcap2/libcap-dev_2.44-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2.2+b1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libc/libcloudproviders/libcloudproviders0_0.3.0-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdatrie/libdatrie1_0.2.13-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdatrie/libdatrie-dev_0.2.13-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-glib4_18.10.20180917~bzr492+repack1-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-glib-dev_18.10.20180917~bzr492+repack1-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk3-4_18.10.20180917~bzr492+repack1-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdbusmenu/libdbusmenu-gtk4_18.10.20180917~bzr492+repack1-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdeflate/libdeflate0_1.7-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdeflate/libdeflate-dev_1.7-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm2_2.4.104-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.104-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-dev_2.4.104-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-nouveau2_2.4.104-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libd/libdrm/libdrm-radeon1_2.4.104-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libepoxy/libepoxy0_1.5.8-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libepoxy/libepoxy-dev_1.5.8-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libevdev/libevdev2_1.11.0+dfsg-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libevdev/libevdev-dev_1.11.0+dfsg-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libe/libevent/libevent-2.1-7_2.1.12-stable-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi6_3.2.1-9_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi7_3.3-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi8_3.4.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libf/libffi/libffi-dev_3.3-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.7-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgcrypt20/libgcrypt20-dev_1.8.7-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libegl1_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libegl-dev_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgl1_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgl-dev_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgles1_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgles2_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libgles-dev_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglvnd0_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglvnd-dev_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglx0_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libglx-dev_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libglvnd/libopengl0_1.3.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgnome-keyring/libgnome-keyring0_3.12.0-1+b2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgnome-keyring/libgnome-keyring-dev_3.12.0-1+b2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgpg-error/libgpg-error0_1.38-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgpg-error/libgpg-error-dev_1.38-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libg/libgudev/libgudev-1.0-0_234-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libice/libice6_1.0.10-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libidl/libidl-2-0_0.8.14-4+b12_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libidn2/libidn2-0_2.3.2-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libidn/libidn11_1.33-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libindicator/libindicator3-7_0.5.0-4_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libindicator/libindicator7_0.5.0-4_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libinput/libinput10_1.16.4-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libi/libinput/libinput-dev_1.16.4-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.0.6-4_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_2.0.6-4_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjsoncpp/libjsoncpp24_1.9.4-4_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libj/libjsoncpp/libjsoncpp-dev_1.9.4-4_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libm/libmd/libmd0_1.0.3-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libn/libnsl/libnsl2_1.3.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libn/libnss-db/libnss-db_2.2.3pre1-6+b10_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libo/libogg/libogg0_1.3.4-0.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libo/libogg/libogg-dev_1.3.4-0.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpciaccess/libpciaccess0_0.16-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpng1.6/libpng16-16_1.6.37-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpng1.6/libpng-dev_1.6.37-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpsl/libpsl5_0.21.0-1.2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.4-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libr/librest/librest-0.7-0_0.8.1-1.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libselinux/libselinux1_3.1-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libselinux/libselinux1-dev_3.1-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsepol/libsepol1_3.1-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsepol/libsepol1-dev_3.1-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsm/libsm6_1.2.3-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsndfile/libsndfile1_1.0.31-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsoup2.4/libsoup2.4-1_2.72.0-4_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libsoup2.4/libsoup-gnome2.4-1_2.72.0-4_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libs/libssh2/libssh2-1_1.9.0-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libthai/libthai0_0.1.28-4_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libthai/libthai-dev_0.1.28-4_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libtirpc/libtirpc3_1.3.2-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libt/libtool/libltdl7_2.4.6-15_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libu/libunistring/libunistring2_0.9.10-6_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libu/libutempter/libutempter0_1.2.1-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libu/libutempter/libutempter-dev_1.2.1-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva2_2.12.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-dev_2.12.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-drm2_2.12.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-glx2_2.12.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-wayland2_2.12.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libva/libva-x11-2_2.12.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libvorbis/libvorbis0a_1.3.7-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libv/libvorbis/libvorbisenc2_1.3.7-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwacom/libwacom2_1.8-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebp6_0.6.1-2.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebpdemux2_0.6.1-2.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebp-dev_0.6.1-2.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libw/libwebp/libwebpmux3_0.6.1-2.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-6_1.7.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-dev_1.7.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-xcb1_1.7.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libx11/libx11-xcb-dev_1.7.2-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxau/libxau6_1.0.9-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxau/libxau-dev_1.0.9-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb1_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb1-dev_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri2-0_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri2-0-dev_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri3-0_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-dri3-dev_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-glx0_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-glx0-dev_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-present0_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-present-dev_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-render0_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-render0-dev_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-shm0_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-shm0-dev_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-sync1_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcb/libxcb-xfixes0_1.14-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcomposite/libxcomposite1_0.4.5-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.5-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcursor/libxcursor1_1.2.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxcursor/libxcursor-dev_1.2.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdamage/libxdamage1_1.1.5-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdamage/libxdamage-dev_1.1.5-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxext/libxext6_1.3.3-1.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxext/libxext-dev_1.3.3-1.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxfixes/libxfixes3_5.0.3-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxi/libxi6_1.7.10-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxi/libxi-dev_1.7.10-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxinerama/libxinerama1_1.1.4-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxkbcommon/libxkbcommon0_1.0.3-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxkbcommon/libxkbcommon-dev_1.0.3-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxml2/libxml2_2.9.10+dfsg-6.7_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxml2/libxml2-dev_2.9.10+dfsg-6.7_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrandr/libxrandr2_1.5.1-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrender/libxrender1_0.9.10-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxshmfence/libxshmfence1_1.3-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxshmfence/libxshmfence-dev_1.3-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxslt/libxslt1.1_1.1.34-4_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxslt/libxslt1-dev_1.1.34-4_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxss/libxss1_1.2.3-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxss/libxss-dev_1.2.3-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxt/libxt6_1.2.0-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxt/libxt-dev_1.2.0-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxtst/libxtst6_1.2.3-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxtst/libxtst-dev_1.2.3-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxxf86vm/libxxf86vm1_1.1.4-1+b2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libx/libxxf86vm/libxxf86vm-dev_1.1.4-1+b2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/libz/libzstd/libzstd1_1.4.8+dfsg-2.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/lcms2/liblcms2-2_2.12~rc1-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/linux/linux-libc-dev_5.10.46-4_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/lz4/liblz4-1_1.9.3-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/l/lzo2/liblzo2-2_2.10-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libegl1-mesa_20.3.5-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libegl1-mesa-dev_20.3.5-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgbm1_20.3.5-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgbm-dev_20.3.5-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgl1-mesa-dev_20.3.5-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libgl1-mesa-glx_20.3.5-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libglapi-mesa_20.3.5-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/libwayland-egl1-mesa_20.3.5-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mesa/mesa-common-dev_20.3.5-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/minizip/libminizip1_1.1-8+b1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/minizip/libminizip-dev_1.1-8+b1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/m/mtdev/libmtdev1_1.1.6-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libncurses6_6.2+20201114-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libncurses-dev_6.2+20201114-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libncursesw6_6.2+20201114-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/ncurses/libtinfo6_6.2+20201114-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nettle/libhogweed6_3.7.3-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nettle/libnettle8_3.7.3-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nghttp2/libnghttp2-14_1.43.0-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nspr/libnspr4_4.32-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nspr/libnspr4-dev_4.32-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nss/libnss3_3.68-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/n/nss/libnss3-dev_3.68-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/openldap/libldap-2.4-2_2.4.57+dfsg-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/openssl/libssl1.1_1.1.1k-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/openssl/libssl-dev_1.1.1k-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/opus/libopus0_1.3.1-0.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/o/opus/libopus-dev_1.3.1-0.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/p11-kit/libp11-kit0_0.23.22-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pam/libpam0g_1.4.0-9_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pam/libpam0g-dev_1.4.0-9_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpango-1.0-0_1.46.2-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpango1.0-dev_1.46.2-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpangocairo-1.0-0_1.46.2-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpangoft2-1.0-0_1.46.2-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pango1.0/libpangoxft-1.0-0_1.46.2-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pangox-compat/libpangox-1.0-0_0.0.2-5.1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pciutils/libpci3_3.7.0-5_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pciutils/libpci-dev_3.7.0-5_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-16-0_10.36-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-32-0_10.36-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-8-0_10.36-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-dev_10.36-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-posix0_10.22-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre2/libpcre2-posix2_10.36-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre16-3_8.39-13_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre32-3_8.39-13_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre3_8.39-13_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcre3-dev_8.39-13_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pcre3/libpcrecpp0v5_8.39-13_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pipewire/libpipewire-0.3-0_0.3.33-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pipewire/libpipewire-0.3-dev_0.3.33-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pipewire/libspa-0.2-dev_0.3.33-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pixman/libpixman-1-0_0.40.0-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pixman/libpixman-1-dev_0.40.0-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pulseaudio/libpulse0_14.2-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pulseaudio/libpulse-dev_14.2-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/p/pulseaudio/libpulse-mainloop-glib0_14.2-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/r/re2/libre2-9_20210801+dfsg-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/r/re2/libre2-dev_20210801+dfsg-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d.1-2+b2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/shared-mime-info/shared-mime-info_2.0-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/snappy/libsnappy1v5_1.1.8-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/snappy/libsnappy-dev_1.1.8-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/speech-dispatcher/libspeechd2_0.10.2-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/speech-dispatcher/libspeechd-dev_0.10.2-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/sqlite3/libsqlite3-0_3.34.1-3_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/systemd/libsystemd0_247.9-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/systemd/libudev1_247.9-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/s/systemd/libudev-dev_247.9-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tcp-wrappers/libwrap0_7.6.q-31_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tiff/libtiff5_4.2.0-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tiff/libtiff-dev_4.2.0-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/t/tiff/libtiffxx5_4.2.0-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/unbound/libunbound8_1.13.1-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libblkid1_2.36.1-8_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libblkid-dev_2.36.1-8_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libmount1_2.36.1-8_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libmount-dev_2.36.1-8_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/libuuid1_2.36.1-8_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/u/util-linux/uuid-dev_2.36.1-8_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/v/vulkan-loader/libvulkan1_1.2.162.0-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/v/vulkan-loader/libvulkan-dev_1.2.162.0-1_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-client0_1.19.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-cursor0_1.19.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-dev_1.19.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-egl1_1.19.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland/libwayland-server0_1.19.0-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/w/wayland-protocols/wayland-protocols_1.20-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/x11proto-composite/x11proto-composite-dev_0.4.2-2_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/x11proto-damage/x11proto-damage-dev_1.2.1-2_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/x11proto-fixes/x11proto-fixes-dev_5.0-2_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xft/libxft2_2.3.2-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xft/libxft-dev_2.3.2-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-input-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-kb-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-randr-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-record-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-render-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-scrnsaver-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-xext-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xorgproto/x11proto-xinerama-dev_2020.1-1_all.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/x/xz-utils/liblzma5_5.2.5-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2_mipsel.deb -https://snapshot.debian.org/archive/debian/20210819T144544Z/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-2_mipsel.deb diff --git a/build/linux/sysroot_scripts/install-sysroot.py b/build/linux/sysroot_scripts/install-sysroot.py index 42842a1..a2ac830 100755 --- a/build/linux/sysroot_scripts/install-sysroot.py +++ b/build/linux/sysroot_scripts/install-sysroot.py @@ -25,34 +25,28 @@ import hashlib import json -import platform import optparse import os -import re import shutil import subprocess import sys -try: - # For Python 3.0 and later - from urllib.request import urlopen -except ImportError: - # Fall back to Python 2's urllib2 - from urllib2 import urlopen +from urllib.request import urlopen SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) +SRC_DIR = os.path.dirname(os.path.dirname(os.path.dirname(SCRIPT_DIR))) -URL_PREFIX = 'https://commondatastorage.googleapis.com' -URL_PATH = 'chrome-linux-sysroot/toolchain' - -VALID_ARCHS = ('arm', 'arm64', 'i386', 'amd64', 'mips', 'mips64el') +VALID_ARCHS = ('amd64', 'i386', 'armhf', 'arm64', 'armel', 'mipsel', 'mips64el') ARCH_TRANSLATIONS = { 'x64': 'amd64', 'x86': 'i386', - 'mipsel': 'mips', + 'arm': 'armhf', + 'mips': 'mipsel', 'mips64': 'mips64el', } +DEFAULT_SYSROOTS_PATH = os.path.join(os.path.relpath(SCRIPT_DIR, SRC_DIR), + 'sysroots.json') DEFAULT_TARGET_PLATFORM = 'bullseye' @@ -74,6 +68,8 @@ def GetSha1(filename): def main(args): parser = optparse.OptionParser('usage: %prog [OPTIONS]', description=__doc__) + parser.add_option('--sysroots-json-path', + help='The location of sysroots.json file') parser.add_option('--arch', help='Sysroot architecture: %s' % ', '.join(VALID_ARCHS)) parser.add_option('--all', action='store_true', @@ -83,18 +79,23 @@ def main(args): help='Print the hash of the sysroot for the given arch.') options, _ = parser.parse_args(args) + if options.sysroots_json_path: + sysroots_json_path = options.sysroots_json_path + else: + sysroots_json_path = DEFAULT_SYSROOTS_PATH + if options.print_key: arch = options.print_key print( - GetSysrootDict(DEFAULT_TARGET_PLATFORM, + GetSysrootDict(sysroots_json_path, DEFAULT_TARGET_PLATFORM, ARCH_TRANSLATIONS.get(arch, arch))['Key']) return 0 if options.arch: - InstallSysroot(DEFAULT_TARGET_PLATFORM, + InstallSysroot(sysroots_json_path, DEFAULT_TARGET_PLATFORM, ARCH_TRANSLATIONS.get(options.arch, options.arch)) elif options.all: for arch in VALID_ARCHS: - InstallSysroot(DEFAULT_TARGET_PLATFORM, arch) + InstallSysroot(sysroots_json_path, DEFAULT_TARGET_PLATFORM, arch) else: print('You much specify one of the options.') return 1 @@ -102,11 +103,11 @@ def main(args): return 0 -def GetSysrootDict(target_platform, target_arch): +def GetSysrootDict(sysroots_json_path, target_platform, target_arch): if target_arch not in VALID_ARCHS: raise Error('Unknown architecture: %s' % target_arch) - sysroots_file = os.path.join(SCRIPT_DIR, 'sysroots.json') + sysroots_file = os.path.join(SRC_DIR, sysroots_json_path) sysroots = json.load(open(sysroots_file)) sysroot_key = '%s_%s' % (target_platform, target_arch) if sysroot_key not in sysroots: @@ -114,17 +115,18 @@ def GetSysrootDict(target_platform, target_arch): return sysroots[sysroot_key] -def InstallSysroot(target_platform, target_arch): - sysroot_dict = GetSysrootDict(target_platform, target_arch) +def InstallSysroot(sysroots_json_path, target_platform, target_arch): + sysroot_dict = GetSysrootDict(sysroots_json_path, target_platform, + target_arch) tarball_filename = sysroot_dict['Tarball'] tarball_sha1sum = sysroot_dict['Sha1Sum'] + url_prefix = sysroot_dict['URL'] # TODO(thestig) Consider putting this elsewhere to avoid having to recreate # it on every build. linux_dir = os.path.dirname(SCRIPT_DIR) sysroot = os.path.join(linux_dir, sysroot_dict['SysrootDir']) - url = '%s/%s/%s/%s' % (URL_PREFIX, URL_PATH, tarball_sha1sum, - tarball_filename) + url = '%s/%s/%s' % (url_prefix, tarball_sha1sum, tarball_filename) stamp = os.path.join(sysroot, '.stamp') if os.path.exists(stamp): diff --git a/build/linux/sysroot_scripts/keyring.gpg b/build/linux/sysroot_scripts/keyring.gpg index 81e2624..f111998 100644 Binary files a/build/linux/sysroot_scripts/keyring.gpg and b/build/linux/sysroot_scripts/keyring.gpg differ diff --git a/build/linux/sysroot_scripts/libdbus-1-3-symbols b/build/linux/sysroot_scripts/libdbus-1-3-symbols deleted file mode 100644 index 28050aa..0000000 --- a/build/linux/sysroot_scripts/libdbus-1-3-symbols +++ /dev/null @@ -1,235 +0,0 @@ -libdbus-1.so.3 libdbus-1-3 #MINVER# - dbus_address_entries_free@Base 1.0.2 - dbus_address_entry_get_method@Base 1.0.2 - dbus_address_entry_get_value@Base 1.0.2 - dbus_address_escape_value@Base 1.0.2 - dbus_address_unescape_value@Base 1.0.2 - dbus_bus_add_match@Base 1.0.2 - dbus_bus_get@Base 1.0.2 - dbus_bus_get_id@Base 1.1.1 - dbus_bus_get_private@Base 1.0.2 - dbus_bus_get_unique_name@Base 1.0.2 - dbus_bus_get_unix_user@Base 1.0.2 - dbus_bus_name_has_owner@Base 1.0.2 - dbus_bus_register@Base 1.0.2 - dbus_bus_release_name@Base 1.0.2 - dbus_bus_remove_match@Base 1.0.2 - dbus_bus_request_name@Base 1.0.2 - dbus_bus_set_unique_name@Base 1.0.2 - dbus_bus_start_service_by_name@Base 1.0.2 - dbus_connection_add_filter@Base 1.0.2 - dbus_connection_allocate_data_slot@Base 1.0.2 - dbus_connection_borrow_message@Base 1.0.2 - dbus_connection_can_send_type@Base 1.3.1 - dbus_connection_close@Base 1.0.2 - dbus_connection_dispatch@Base 1.0.2 - dbus_connection_flush@Base 1.0.2 - dbus_connection_free_data_slot@Base 1.0.2 - dbus_connection_free_preallocated_send@Base 1.0.2 - dbus_connection_get_adt_audit_session_data@Base 1.2.4 - dbus_connection_get_data@Base 1.0.2 - dbus_connection_get_dispatch_status@Base 1.0.2 - dbus_connection_get_is_anonymous@Base 1.1.1 - dbus_connection_get_is_authenticated@Base 1.0.2 - dbus_connection_get_is_connected@Base 1.0.2 - dbus_connection_get_max_message_size@Base 1.0.2 - dbus_connection_get_max_message_unix_fds@Base 1.3.1 - dbus_connection_get_max_received_size@Base 1.0.2 - dbus_connection_get_max_received_unix_fds@Base 1.3.1 - dbus_connection_get_object_path_data@Base 1.0.2 - dbus_connection_get_outgoing_size@Base 1.0.2 - dbus_connection_get_outgoing_unix_fds@Base 1.3.1 - dbus_connection_get_server_id@Base 1.1.1 - dbus_connection_get_socket@Base 1.0.2 - dbus_connection_get_unix_fd@Base 1.0.2 - dbus_connection_get_unix_process_id@Base 1.0.2 - dbus_connection_get_unix_user@Base 1.0.2 - dbus_connection_get_windows_user@Base 1.1.1 - dbus_connection_has_messages_to_send@Base 1.0.2 - dbus_connection_list_registered@Base 1.0.2 - dbus_connection_open@Base 1.0.2 - dbus_connection_open_private@Base 1.0.2 - dbus_connection_pop_message@Base 1.0.2 - dbus_connection_preallocate_send@Base 1.0.2 - dbus_connection_read_write@Base 1.0.2 - dbus_connection_read_write_dispatch@Base 1.0.2 - dbus_connection_ref@Base 1.0.2 - dbus_connection_register_fallback@Base 1.0.2 - dbus_connection_register_object_path@Base 1.0.2 - dbus_connection_remove_filter@Base 1.0.2 - dbus_connection_return_message@Base 1.0.2 - dbus_connection_send@Base 1.0.2 - dbus_connection_send_preallocated@Base 1.0.2 - dbus_connection_send_with_reply@Base 1.0.2 - dbus_connection_send_with_reply_and_block@Base 1.0.2 - dbus_connection_set_allow_anonymous@Base 1.1.1 - dbus_connection_set_change_sigpipe@Base 1.0.2 - dbus_connection_set_data@Base 1.0.2 - dbus_connection_set_dispatch_status_function@Base 1.0.2 - dbus_connection_set_exit_on_disconnect@Base 1.0.2 - dbus_connection_set_max_message_size@Base 1.0.2 - dbus_connection_set_max_message_unix_fds@Base 1.3.1 - dbus_connection_set_max_received_size@Base 1.0.2 - dbus_connection_set_max_received_unix_fds@Base 1.3.1 - dbus_connection_set_route_peer_messages@Base 1.0.2 - dbus_connection_set_timeout_functions@Base 1.0.2 - dbus_connection_set_unix_user_function@Base 1.0.2 - dbus_connection_set_wakeup_main_function@Base 1.0.2 - dbus_connection_set_watch_functions@Base 1.0.2 - dbus_connection_set_windows_user_function@Base 1.1.1 - dbus_connection_steal_borrowed_message@Base 1.0.2 - dbus_connection_try_register_fallback@Base 1.1.4 - dbus_connection_try_register_object_path@Base 1.1.4 - dbus_connection_unref@Base 1.0.2 - dbus_connection_unregister_object_path@Base 1.0.2 - dbus_error_free@Base 1.0.2 - dbus_error_has_name@Base 1.0.2 - dbus_error_init@Base 1.0.2 - dbus_error_is_set@Base 1.0.2 - dbus_free@Base 1.0.2 - dbus_free_string_array@Base 1.0.2 - dbus_get_local_machine_id@Base 1.0.2 - dbus_get_version@Base 1.1.4 - dbus_internal_do_not_use_create_uuid@Base 1.0.2 - dbus_internal_do_not_use_get_uuid@Base 1.0.2 - dbus_malloc0@Base 1.0.2 - dbus_malloc@Base 1.0.2 - dbus_message_allocate_data_slot@Base 1.0.2 - dbus_message_append_args@Base 1.0.2 - dbus_message_append_args_valist@Base 1.0.2 - dbus_message_contains_unix_fds@Base 1.3.1 - dbus_message_copy@Base 1.0.2 - dbus_message_demarshal@Base 1.1.1 - dbus_message_demarshal_bytes_needed@Base 1.2.14 - dbus_message_free_data_slot@Base 1.0.2 - dbus_message_get_args@Base 1.0.2 - dbus_message_get_args_valist@Base 1.0.2 - dbus_message_get_auto_start@Base 1.0.2 - dbus_message_get_data@Base 1.0.2 - dbus_message_get_destination@Base 1.0.2 - dbus_message_get_error_name@Base 1.0.2 - dbus_message_get_interface@Base 1.0.2 - dbus_message_get_member@Base 1.0.2 - dbus_message_get_no_reply@Base 1.0.2 - dbus_message_get_path@Base 1.0.2 - dbus_message_get_path_decomposed@Base 1.0.2 - dbus_message_get_reply_serial@Base 1.0.2 - dbus_message_get_sender@Base 1.0.2 - dbus_message_get_serial@Base 1.0.2 - dbus_message_get_signature@Base 1.0.2 - dbus_message_get_type@Base 1.0.2 - dbus_message_has_destination@Base 1.0.2 - dbus_message_has_interface@Base 1.0.2 - dbus_message_has_member@Base 1.0.2 - dbus_message_has_path@Base 1.0.2 - dbus_message_has_sender@Base 1.0.2 - dbus_message_has_signature@Base 1.0.2 - dbus_message_is_error@Base 1.0.2 - dbus_message_is_method_call@Base 1.0.2 - dbus_message_is_signal@Base 1.0.2 - dbus_message_iter_abandon_container@Base 1.2.16 - dbus_message_iter_append_basic@Base 1.0.2 - dbus_message_iter_append_fixed_array@Base 1.0.2 - dbus_message_iter_close_container@Base 1.0.2 - dbus_message_iter_get_arg_type@Base 1.0.2 - dbus_message_iter_get_array_len@Base 1.0.2 - dbus_message_iter_get_basic@Base 1.0.2 - dbus_message_iter_get_element_type@Base 1.0.2 - dbus_message_iter_get_fixed_array@Base 1.0.2 - dbus_message_iter_get_signature@Base 1.0.2 - dbus_message_iter_has_next@Base 1.0.2 - dbus_message_iter_init@Base 1.0.2 - dbus_message_iter_init_append@Base 1.0.2 - dbus_message_iter_next@Base 1.0.2 - dbus_message_iter_open_container@Base 1.0.2 - dbus_message_iter_recurse@Base 1.0.2 - dbus_message_lock@Base 1.2.14 - dbus_message_marshal@Base 1.1.1 - dbus_message_new@Base 1.0.2 - dbus_message_new_error@Base 1.0.2 - dbus_message_new_error_printf@Base 1.0.2 - dbus_message_new_method_call@Base 1.0.2 - dbus_message_new_method_return@Base 1.0.2 - dbus_message_new_signal@Base 1.0.2 - dbus_message_ref@Base 1.0.2 - dbus_message_set_auto_start@Base 1.0.2 - dbus_message_set_data@Base 1.0.2 - dbus_message_set_destination@Base 1.0.2 - dbus_message_set_error_name@Base 1.0.2 - dbus_message_set_interface@Base 1.0.2 - dbus_message_set_member@Base 1.0.2 - dbus_message_set_no_reply@Base 1.0.2 - dbus_message_set_path@Base 1.0.2 - dbus_message_set_reply_serial@Base 1.0.2 - dbus_message_set_sender@Base 1.0.2 - dbus_message_set_serial@Base 1.2.14 - dbus_message_type_from_string@Base 1.0.2 - dbus_message_type_to_string@Base 1.0.2 - dbus_message_unref@Base 1.0.2 - dbus_move_error@Base 1.0.2 - dbus_parse_address@Base 1.0.2 - dbus_pending_call_allocate_data_slot@Base 1.0.2 - dbus_pending_call_block@Base 1.0.2 - dbus_pending_call_cancel@Base 1.0.2 - dbus_pending_call_free_data_slot@Base 1.0.2 - dbus_pending_call_get_completed@Base 1.0.2 - dbus_pending_call_get_data@Base 1.0.2 - dbus_pending_call_ref@Base 1.0.2 - dbus_pending_call_set_data@Base 1.0.2 - dbus_pending_call_set_notify@Base 1.0.2 - dbus_pending_call_steal_reply@Base 1.0.2 - dbus_pending_call_unref@Base 1.0.2 - dbus_realloc@Base 1.0.2 - dbus_server_allocate_data_slot@Base 1.0.2 - dbus_server_disconnect@Base 1.0.2 - dbus_server_free_data_slot@Base 1.0.2 - dbus_server_get_address@Base 1.0.2 - dbus_server_get_data@Base 1.0.2 - dbus_server_get_id@Base 1.1.1 - dbus_server_get_is_connected@Base 1.0.2 - dbus_server_listen@Base 1.0.2 - dbus_server_ref@Base 1.0.2 - dbus_server_set_auth_mechanisms@Base 1.0.2 - dbus_server_set_data@Base 1.0.2 - dbus_server_set_new_connection_function@Base 1.0.2 - dbus_server_set_timeout_functions@Base 1.0.2 - dbus_server_set_watch_functions@Base 1.0.2 - dbus_server_unref@Base 1.0.2 - dbus_set_error@Base 1.0.2 - dbus_set_error_const@Base 1.0.2 - dbus_set_error_from_message@Base 1.0.2 - dbus_setenv@Base 1.7.6 - dbus_shutdown@Base 1.0.2 - dbus_signature_iter_get_current_type@Base 1.0.2 - dbus_signature_iter_get_element_type@Base 1.0.2 - dbus_signature_iter_get_signature@Base 1.0.2 - dbus_signature_iter_init@Base 1.0.2 - dbus_signature_iter_next@Base 1.0.2 - dbus_signature_iter_recurse@Base 1.0.2 - dbus_signature_validate@Base 1.0.2 - dbus_signature_validate_single@Base 1.0.2 - dbus_threads_init@Base 1.0.2 - dbus_threads_init_default@Base 1.0.2 - dbus_timeout_get_data@Base 1.0.2 - dbus_timeout_get_enabled@Base 1.0.2 - dbus_timeout_get_interval@Base 1.0.2 - dbus_timeout_handle@Base 1.0.2 - dbus_timeout_set_data@Base 1.0.2 - dbus_type_is_basic@Base 1.0.2 - dbus_type_is_container@Base 1.0.2 - dbus_type_is_fixed@Base 1.0.2 - dbus_type_is_valid@Base 1.5.0 - dbus_validate_bus_name@Base 1.5.12 - dbus_validate_error_name@Base 1.5.12 - dbus_validate_interface@Base 1.5.12 - dbus_validate_member@Base 1.5.12 - dbus_validate_path@Base 1.5.12 - dbus_validate_utf8@Base 1.5.12 - dbus_watch_get_data@Base 1.0.2 - dbus_watch_get_enabled@Base 1.0.2 - dbus_watch_get_fd@Base 1.0.2 - dbus_watch_get_flags@Base 1.0.2 - dbus_watch_get_socket@Base 1.1.1 - dbus_watch_get_unix_fd@Base 1.1.1 - dbus_watch_handle@Base 1.0.2 - dbus_watch_set_data@Base 1.0.2 diff --git a/build/linux/sysroot_scripts/libxkbcommon0-symbols b/build/linux/sysroot_scripts/libxkbcommon0-symbols deleted file mode 100644 index 5750fc0..0000000 --- a/build/linux/sysroot_scripts/libxkbcommon0-symbols +++ /dev/null @@ -1,93 +0,0 @@ -libxkbcommon.so.0 libxkbcommon0 #MINVER# - xkb_context_get_log_level@Base 0.4.1 - xkb_context_get_log_verbosity@Base 0.4.1 - xkb_context_get_user_data@Base 0.4.1 - xkb_context_include_path_append@Base 0.4.1 - xkb_context_include_path_append_default@Base 0.4.1 - xkb_context_include_path_clear@Base 0.4.1 - xkb_context_include_path_get@Base 0.4.1 - xkb_context_include_path_reset_defaults@Base 0.4.1 - xkb_context_new@Base 0.4.1 - xkb_context_num_include_paths@Base 0.4.1 - xkb_context_ref@Base 0.4.1 - xkb_context_set_log_fn@Base 0.4.1 - xkb_context_set_log_level@Base 0.4.1 - xkb_context_set_log_verbosity@Base 0.4.1 - xkb_context_set_user_data@Base 0.4.1 - xkb_context_unref@Base 0.4.1 - xkb_key_get_syms@Base 0.4.1 - xkb_key_mod_index_is_consumed@Base 0.4.1 - xkb_key_mod_mask_remove_consumed@Base 0.4.1 - xkb_key_num_groups@Base 0.4.1 - xkb_key_repeats@Base 0.4.1 - xkb_keymap_get_as_string@Base 0.4.1 - xkb_keymap_key_for_each@Base 0.4.1 - xkb_keymap_key_get_syms_by_level@Base 0.4.1 - xkb_keymap_key_repeats@Base 0.4.1 - xkb_keymap_layout_get_index@Base 0.4.1 - xkb_keymap_layout_get_name@Base 0.4.1 - xkb_keymap_led_get_index@Base 0.4.1 - xkb_keymap_led_get_name@Base 0.4.1 - xkb_keymap_max_keycode@Base 0.4.1 - xkb_keymap_min_keycode@Base 0.4.1 - xkb_keymap_mod_get_index@Base 0.4.1 - xkb_keymap_mod_get_name@Base 0.4.1 - xkb_keymap_new_from_buffer@Base 0.4.1 - xkb_keymap_new_from_file@Base 0.4.1 - xkb_keymap_new_from_names@Base 0.4.1 - xkb_keymap_new_from_string@Base 0.4.1 - xkb_keymap_num_layouts@Base 0.4.1 - xkb_keymap_num_layouts_for_key@Base 0.4.1 - xkb_keymap_num_leds@Base 0.4.1 - xkb_keymap_num_levels_for_key@Base 0.4.1 - xkb_keymap_num_mods@Base 0.4.1 - xkb_keymap_ref@Base 0.4.1 - xkb_keymap_unref@Base 0.4.1 - xkb_keysym_from_name@Base 0.4.1 - xkb_keysym_get_name@Base 0.4.1 - xkb_keysym_to_utf32@Base 0.4.1 - xkb_keysym_to_utf8@Base 0.4.1 - xkb_map_get_as_string@Base 0.4.1 - xkb_map_group_get_index@Base 0.4.1 - xkb_map_group_get_name@Base 0.4.1 - xkb_map_led_get_index@Base 0.4.1 - xkb_map_led_get_name@Base 0.4.1 - xkb_map_mod_get_index@Base 0.4.1 - xkb_map_mod_get_name@Base 0.4.1 - xkb_map_new_from_file@Base 0.4.1 - xkb_map_new_from_names@Base 0.4.1 - xkb_map_new_from_string@Base 0.4.1 - xkb_map_num_groups@Base 0.4.1 - xkb_map_num_leds@Base 0.4.1 - xkb_map_num_mods@Base 0.4.1 - xkb_map_ref@Base 0.4.1 - xkb_map_unref@Base 0.4.1 - xkb_state_get_keymap@Base 0.4.1 - xkb_state_get_map@Base 0.4.1 - xkb_state_group_index_is_active@Base 0.4.1 - xkb_state_group_name_is_active@Base 0.4.1 - xkb_state_key_get_consumed_mods@Base 0.4.1 - xkb_state_key_get_layout@Base 0.4.1 - xkb_state_key_get_level@Base 0.4.1 - xkb_state_key_get_one_sym@Base 0.4.1 - xkb_state_key_get_syms@Base 0.4.1 - xkb_state_key_get_utf32@Base 0.4.1 - xkb_state_key_get_utf8@Base 0.4.1 - xkb_state_layout_index_is_active@Base 0.4.1 - xkb_state_layout_name_is_active@Base 0.4.1 - xkb_state_led_index_is_active@Base 0.4.1 - xkb_state_led_name_is_active@Base 0.4.1 - xkb_state_mod_index_is_active@Base 0.4.1 - xkb_state_mod_index_is_consumed@Base 0.4.1 - xkb_state_mod_indices_are_active@Base 0.4.1 - xkb_state_mod_mask_remove_consumed@Base 0.4.1 - xkb_state_mod_name_is_active@Base 0.4.1 - xkb_state_mod_names_are_active@Base 0.4.1 - xkb_state_new@Base 0.4.1 - xkb_state_ref@Base 0.4.1 - xkb_state_serialize_group@Base 0.4.1 - xkb_state_serialize_layout@Base 0.4.1 - xkb_state_serialize_mods@Base 0.4.1 - xkb_state_unref@Base 0.4.1 - xkb_state_update_key@Base 0.4.1 - xkb_state_update_mask@Base 0.4.1 diff --git a/build/linux/sysroot_scripts/sysroot-creator-bullseye.sh b/build/linux/sysroot_scripts/sysroot-creator-bullseye.sh deleted file mode 100755 index 8ed9ac3..0000000 --- a/build/linux/sysroot_scripts/sysroot-creator-bullseye.sh +++ /dev/null @@ -1,485 +0,0 @@ -#!/bin/bash -# Copyright 2022 The Chromium Authors -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - -DISTRO=debian -DIST=bullseye - -# This number is appended to the sysroot key to cause full rebuilds. It -# should be incremented when removing packages or patching existing packages. -# It should not be incremented when adding packages. -SYSROOT_RELEASE=1 - -ARCHIVE_TIMESTAMP=20221105T211506Z -ARCHIVE_URL="https://snapshot.debian.org/archive/debian/$ARCHIVE_TIMESTAMP/" -APT_SOURCES_LIST=( - # Debian 12 (Bookworm) is needed for GTK4. It should be kept before bullseye - # so that bullseye takes precedence. - "${ARCHIVE_URL} bookworm main" - "${ARCHIVE_URL} bookworm-updates main" - - # Debian 9 (Stretch) is needed for gnome-keyring. It should be kept before - # bullseye so that bullseye takes precedence. - "${ARCHIVE_URL} stretch main" - "${ARCHIVE_URL} stretch-updates main" - - # This mimicks a sources.list from bullseye. - "${ARCHIVE_URL} bullseye main contrib non-free" - "${ARCHIVE_URL} bullseye-updates main contrib non-free" - "${ARCHIVE_URL} bullseye-backports main contrib non-free" -) - -# gpg keyring file generated using generate_keyring.sh -KEYRING_FILE="${SCRIPT_DIR}/keyring.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 - -# Sysroot packages: these are the packages needed to build chrome. -DEBIAN_PACKAGES="\ - comerr-dev - krb5-multidev - libasound2 - libasound2-dev - libasyncns0 - libatk-bridge2.0-0 - libatk-bridge2.0-dev - libatk1.0-0 - libatk1.0-dev - libatomic1 - libatspi2.0-0 - libatspi2.0-dev - libattr1 - libaudit1 - libavahi-client3 - libavahi-common3 - libblkid-dev - libblkid1 - libbluetooth-dev - libbluetooth3 - libbrotli-dev - libbrotli1 - libbsd0 - libc6 - libc6-dev - libcairo-gobject2 - libcairo-script-interpreter2 - libcairo2 - libcairo2-dev - libcap-dev - libcap-ng0 - libcap2 - libcloudproviders0 - libcolord2 - libcom-err2 - libcrypt-dev - libcrypt1 - libcups2 - libcups2-dev - libcupsimage2 - libcupsimage2-dev - libcurl3-gnutls - libcurl4-gnutls-dev - libdatrie-dev - libdatrie1 - libdb5.3 - libdbus-1-3 - libdbus-1-dev - libdbus-glib-1-2 - libdbusmenu-glib-dev - libdbusmenu-glib4 - libdbusmenu-gtk3-4 - libdbusmenu-gtk4 - libdeflate-dev - libdeflate0 - libdouble-conversion3 - libdrm-amdgpu1 - libdrm-dev - libdrm-nouveau2 - libdrm-radeon1 - libdrm2 - libegl-dev - libegl1 - libegl1-mesa - libegl1-mesa-dev - libelf-dev - libelf1 - libepoxy-dev - libepoxy0 - libevdev-dev - libevdev2 - libevent-2.1-7 - libexpat1 - libexpat1-dev - libffi-dev - libffi7 - libflac-dev - libflac8 - libfontconfig-dev - libfontconfig1 - libfreetype-dev - libfreetype6 - libfribidi-dev - libfribidi0 - libgbm-dev - libgbm1 - libgcc-10-dev - libgcc-s1 - libgcrypt20 - libgcrypt20-dev - libgdk-pixbuf-2.0-0 - libgdk-pixbuf-2.0-dev - libgl-dev - libgl1 - libgl1-mesa-dev - libgl1-mesa-glx - libglapi-mesa - libgles-dev - libgles1 - libgles2 - libglib2.0-0 - libglib2.0-dev - libglvnd-dev - libglvnd0 - libglx-dev - libglx0 - libgmp10 - libgnome-keyring-dev - libgnome-keyring0 - libgnutls-dane0 - libgnutls-openssl27 - libgnutls28-dev - libgnutls30 - libgnutlsxx28 - libgomp1 - libgpg-error-dev - libgpg-error0 - libgraphene-1.0-0 - libgraphene-1.0-dev - libgraphite2-3 - libgraphite2-dev - libgssapi-krb5-2 - libgssrpc4 - libgtk-3-0 - libgtk-3-dev - libgtk-4-1 - libgtk-4-dev - libgtk2.0-0 - libgudev-1.0-0 - libharfbuzz-dev - libharfbuzz-gobject0 - libharfbuzz-icu0 - libharfbuzz0b - libhogweed6 - libice6 - libicu-le-hb0 - libicu67 - libidl-2-0 - libidn11 - libidn2-0 - libinput-dev - libinput10 - libjbig-dev - libjbig0 - libjpeg62-turbo - libjpeg62-turbo-dev - libjson-glib-1.0-0 - libjsoncpp-dev - libjsoncpp24 - libk5crypto3 - libkadm5clnt-mit12 - libkadm5srv-mit12 - libkdb5-10 - libkeyutils1 - libkrb5-3 - libkrb5-dev - libkrb5support0 - liblcms2-2 - libldap-2.4-2 - libltdl7 - liblz4-1 - liblzma5 - liblzo2-2 - libmd0 - libmd4c0 - libminizip-dev - libminizip1 - libmount-dev - libmount1 - libmtdev1 - libncurses-dev - libncurses6 - libncursesw6 - libnettle8 - libnghttp2-14 - libnsl2 - libnspr4 - libnspr4-dev - libnss-db - libnss3 - libnss3-dev - libogg-dev - libogg0 - libopengl0 - libopus-dev - libopus0 - libp11-kit0 - libpam0g - libpam0g-dev - libpango-1.0-0 - libpango1.0-dev - libpangocairo-1.0-0 - libpangoft2-1.0-0 - libpangox-1.0-0 - libpangoxft-1.0-0 - libpci-dev - libpci3 - libpciaccess0 - libpcre16-3 - libpcre2-16-0 - libpcre2-32-0 - libpcre2-8-0 - libpcre2-dev - libpcre2-posix2 - libpcre3 - libpcre3-dev - libpcre32-3 - libpcrecpp0v5 - libpipewire-0.3-0 - libpipewire-0.3-dev - libpixman-1-0 - libpixman-1-dev - libpng-dev - libpng16-16 - libpsl5 - libpthread-stubs0-dev - libpulse-dev - libpulse-mainloop-glib0 - libpulse0 - libqt5concurrent5 - libqt5core5a - libqt5dbus5 - libqt5gui5 - libqt5network5 - libqt5printsupport5 - libqt5sql5 - libqt5test5 - libqt5widgets5 - libqt5xml5 - libre2-9 - libre2-dev - librest-0.7-0 - librtmp1 - libsasl2-2 - libselinux1 - libselinux1-dev - libsepol1 - libsepol1-dev - libsm6 - libsnappy-dev - libsnappy1v5 - libsndfile1 - libsoup-gnome2.4-1 - libsoup2.4-1 - libspa-0.2-dev - libspeechd-dev - libspeechd2 - libsqlite3-0 - libssh2-1 - libssl-dev - libssl1.1 - libstdc++-10-dev - libstdc++6 - libsystemd-dev - libsystemd0 - libtasn1-6 - libthai-dev - libthai0 - libtiff-dev - libtiff5 - libtiffxx5 - libtinfo6 - libtirpc3 - libudev-dev - libudev1 - libunbound8 - libunistring2 - libutempter-dev - libutempter0 - libuuid1 - libva-dev - libva-drm2 - libva-glx2 - libva-wayland2 - libva-x11-2 - libva2 - libvorbis0a - libvorbisenc2 - libvulkan-dev - libvulkan1 - libwacom2 - libwayland-bin - libwayland-client0 - libwayland-cursor0 - libwayland-dev - libwayland-egl-backend-dev - libwayland-egl1 - libwayland-egl1-mesa - libwayland-server0 - libwebp-dev - libwebp6 - libwebpdemux2 - libwebpmux3 - libwrap0 - libx11-6 - libx11-dev - libx11-xcb-dev - libx11-xcb1 - libxau-dev - libxau6 - libxcb-dri2-0 - libxcb-dri2-0-dev - libxcb-dri3-0 - libxcb-dri3-dev - libxcb-glx0 - libxcb-glx0-dev - libxcb-icccm4 - libxcb-image0 - libxcb-image0-dev - libxcb-keysyms1 - libxcb-present-dev - libxcb-present0 - libxcb-randr0 - libxcb-randr0-dev - libxcb-render-util0 - libxcb-render-util0-dev - libxcb-render0 - libxcb-render0-dev - libxcb-shape0 - libxcb-shape0-dev - libxcb-shm0 - libxcb-shm0-dev - libxcb-sync-dev - libxcb-sync1 - libxcb-util-dev - libxcb-util1 - libxcb-xfixes0 - libxcb-xfixes0-dev - libxcb-xinerama0 - libxcb-xinput0 - libxcb-xkb1 - libxcb1 - libxcb1-dev - libxcomposite-dev - libxcomposite1 - libxcursor-dev - libxcursor1 - libxdamage-dev - libxdamage1 - libxdmcp-dev - libxdmcp6 - libxext-dev - libxext6 - libxfixes-dev - libxfixes3 - libxft-dev - libxft2 - libxi-dev - libxi6 - libxinerama-dev - libxinerama1 - libxkbcommon-dev - libxkbcommon-x11-0 - libxkbcommon0 - libxml2 - libxml2-dev - libxrandr-dev - libxrandr2 - libxrender-dev - libxrender1 - libxshmfence-dev - libxshmfence1 - libxslt1-dev - libxslt1.1 - libxss-dev - libxss1 - libxt-dev - libxt6 - libxtst-dev - libxtst6 - libxxf86vm-dev - libxxf86vm1 - libzstd1 - linux-libc-dev - mesa-common-dev - qtbase5-dev - qtbase5-dev-tools - shared-mime-info - uuid-dev - wayland-protocols - x11proto-dev - zlib1g - zlib1g-dev -" - -DEBIAN_PACKAGES_AMD64=" - libtsan0 - liblsan0 -" - -DEBIAN_PACKAGES_X86=" - libasan6 - libdrm-intel1 - libitm1 - libquadmath0 - libubsan1 - valgrind -" - -DEBIAN_PACKAGES_ARM=" - libasan6 - libdrm-etnaviv1 - libdrm-exynos1 - libdrm-freedreno1 - libdrm-omap1 - libdrm-tegra0 - libubsan1 - valgrind -" - -DEBIAN_PACKAGES_ARM64=" - libasan6 - libdrm-etnaviv1 - libdrm-freedreno1 - libdrm-tegra0 - libgmp10 - libitm1 - liblsan0 - libthai0 - libtsan0 - libubsan1 - valgrind -" - -DEBIAN_PACKAGES_ARMEL=" - libasan6 - libdrm-exynos1 - libdrm-freedreno1 - libdrm-omap1 - libdrm-tegra0 - libubsan1 -" - -DEBIAN_PACKAGES_MIPS64EL=" - valgrind -" - -. "${SCRIPT_DIR}/sysroot-creator.sh" diff --git a/build/linux/sysroot_scripts/sysroot-creator-sid.sh b/build/linux/sysroot_scripts/sysroot-creator-sid.sh deleted file mode 100755 index 9ff63ff..0000000 --- a/build/linux/sysroot_scripts/sysroot-creator-sid.sh +++ /dev/null @@ -1,472 +0,0 @@ -#!/bin/bash -# Copyright 2017 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - -DISTRO=debian -DIST=sid - -# Keep the "experimental" repo before the "sid" repo. There are some packages -# that are currently only available in experimental like libgtk-4-1, but if it -# were to be placed first, experimental (unreleased) versions of other packages -# like libc6 would take precedence over the sid (released) versions. While this -# may be useful for certain kinds of development, the standard sysroots should -# continue to be shipped only with released packages. -# Also keep "stretch" before "sid". 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=20210819T144544Z -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 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 - -# Sysroot packages: these are the packages needed to build chrome. -# NOTE: When DEBIAN_PACKAGES is modified, the packagelist files must be updated -# by running this script in GeneratePackageList mode. -DEBIAN_PACKAGES="\ - comerr-dev - krb5-multidev - libappindicator-dev - libappindicator1 - libappindicator3-1 - libappindicator3-dev - libasound2 - libasound2-dev - libasyncns0 - libatk-bridge2.0-0 - libatk-bridge2.0-dev - libatk1.0-0 - libatk1.0-dev - libatomic1 - libatspi2.0-0 - libatspi2.0-dev - libattr1 - libaudit1 - libavahi-client3 - libavahi-common3 - libblkid-dev - libblkid1 - libbluetooth-dev - libbluetooth3 - libbrotli-dev - libbrotli1 - libbsd0 - libc6 - libc6-dev - libcairo-gobject2 - libcairo-script-interpreter2 - libcairo2 - libcairo2-dev - libcap-dev - libcap-ng0 - libcap2 - libcloudproviders0 - libcolord2 - libcom-err2 - libcups2 - libcups2-dev - libcupsimage2 - libcupsimage2-dev - libdatrie-dev - libcurl3-gnutls - libcurl4-gnutls-dev - libdatrie1 - libdb5.3 - libdbus-1-3 - libdbus-1-dev - libdbus-glib-1-2 - libdbusmenu-glib-dev - libdbusmenu-glib4 - libdbusmenu-gtk3-4 - libdbusmenu-gtk4 - libdeflate-dev - libdeflate0 - libdrm-amdgpu1 - libdrm-dev - libdrm-nouveau2 - libdrm-radeon1 - libdrm2 - libegl-dev - libegl1 - libegl1-mesa - libegl1-mesa-dev - libelf-dev - libelf1 - libepoxy-dev - libepoxy0 - libevdev-dev - libevdev2 - libevent-2.1-7 - libexpat1 - libexpat1-dev - libffi-dev - libffi6 - libffi7 - libffi8 - libflac-dev - libflac8 - libfontconfig-dev - libfontconfig1 - libfreetype-dev - libfreetype6 - libfribidi-dev - libfribidi0 - libgbm-dev - libgbm1 - libgcc-10-dev - libgcc1 - libgcrypt20 - libgcrypt20-dev - libgdk-pixbuf-2.0-0 - libgdk-pixbuf-2.0-dev - libgl-dev - libgl1 - libgl1-mesa-dev - libgl1-mesa-glx - libglapi-mesa - libgles-dev - libgles1 - libgles2 - libglib2.0-0 - libglib2.0-dev - libglvnd-dev - libglvnd0 - libglx-dev - libglx0 - libgmp10 - libgnome-keyring-dev - libgnome-keyring0 - libgnutls-dane0 - libgnutls-openssl27 - libgnutls28-dev - libgnutls30 - libgnutlsxx28 - libgomp1 - libgpg-error-dev - libgpg-error0 - libgraphene-1.0-0 - libgraphene-1.0-dev - libgraphite2-3 - libgraphite2-dev - libgssapi-krb5-2 - libgssrpc4 - libgtk-3-0 - libgtk-3-dev - libgtk2.0-0 - libgudev-1.0-0 - libharfbuzz-dev - libharfbuzz-gobject0 - libharfbuzz-icu0 - libharfbuzz0b - libhogweed6 - libice6 - libicu-le-hb0 - libicu67 - libidl-2-0 - libidn11 - libidn2-0 - libindicator3-7 - libindicator7 - libinput-dev - libinput10 - libjbig-dev - libjbig0 - libjpeg62-turbo - libjpeg62-turbo-dev - libjson-glib-1.0-0 - libjsoncpp-dev - libjsoncpp24 - libk5crypto3 - libkadm5clnt-mit12 - libkadm5srv-mit12 - libkdb5-10 - libkeyutils1 - libkrb5-3 - libkrb5-dev - libkrb5support0 - liblcms2-2 - libldap-2.4-2 - libltdl7 - liblz4-1 - liblzma5 - liblzo2-2 - libmd0 - libminizip-dev - libminizip1 - libmount-dev - libmount1 - libmtdev1 - libncurses-dev - libncurses6 - libncursesw6 - libnettle8 - libnghttp2-14 - libnsl2 - libnspr4 - libnspr4-dev - libnss-db - libnss3 - libnss3-dev - libogg-dev - libogg0 - libopengl0 - libopus-dev - libopus0 - libp11-kit0 - libpam0g - libpam0g-dev - libpango-1.0-0 - libpango1.0-dev - libpangocairo-1.0-0 - libpangoft2-1.0-0 - libpangox-1.0-0 - libpangoxft-1.0-0 - libpci-dev - libpci3 - libpciaccess0 - libpcre16-3 - libpcre2-16-0 - libpcre2-32-0 - libpcre2-8-0 - libpcre2-dev - libpcre2-posix0 - libpcre2-posix2 - libpcre3 - libpcre3-dev - libpcre32-3 - libpcrecpp0v5 - libpipewire-0.3-0 - libpipewire-0.3-dev - libpixman-1-0 - libpixman-1-dev - libpng-dev - libpng16-16 - libpsl5 - libpthread-stubs0-dev - libpulse-dev - libpulse-mainloop-glib0 - libpulse0 - libre2-9 - libre2-dev - librest-0.7-0 - librtmp1 - libsasl2-2 - libselinux1 - libselinux1-dev - libsepol1 - libsepol1-dev - libsm6 - libsnappy-dev - libsnappy1v5 - libsndfile1 - libsoup-gnome2.4-1 - libsoup2.4-1 - libspa-0.2-dev - libspeechd-dev - libspeechd2 - libsqlite3-0 - libssh2-1 - libssl-dev - libssl1.1 - libstdc++-10-dev - libstdc++6 - libsystemd0 - libtasn1-6 - libthai-dev - libthai0 - libtiff-dev - libtiff5 - libtiffxx5 - libtinfo6 - libtirpc3 - libudev-dev - libudev1 - libunbound8 - libunistring2 - libutempter-dev - libutempter0 - libuuid1 - libva-dev - libva-drm2 - libva-glx2 - libva-wayland2 - libva-x11-2 - libva2 - libvorbis0a - libvorbisenc2 - libvulkan-dev - libvulkan1 - libwacom2 - libwayland-client0 - libwayland-cursor0 - libwayland-dev - libwayland-egl1 - libwayland-egl1-mesa - libwayland-server0 - libwebp-dev - libwebp6 - libwebpdemux2 - libwebpmux3 - libwrap0 - libx11-6 - libx11-dev - libx11-xcb-dev - libx11-xcb1 - libxau-dev - libxau6 - libxcb-dri2-0 - libxcb-dri2-0-dev - libxcb-dri3-0 - libxcb-dri3-dev - libxcb-glx0 - libxcb-glx0-dev - libxcb-present-dev - libxcb-present0 - libxcb-render0 - libxcb-render0-dev - libxcb-shm0 - libxcb-shm0-dev - libxcb-sync1 - libxcb-xfixes0 - libxcb1 - libxcb1-dev - libxcomposite-dev - libxcomposite1 - libxcursor-dev - libxcursor1 - libxdamage-dev - libxdamage1 - libxdmcp-dev - libxdmcp6 - libxext-dev - libxext6 - libxfixes-dev - libxfixes3 - libxft-dev - libxft2 - libxi-dev - libxi6 - libxinerama-dev - libxinerama1 - libxkbcommon-dev - libxkbcommon0 - libxml2 - libxml2-dev - libxrandr-dev - libxrandr2 - libxrender-dev - libxrender1 - libxshmfence-dev - libxshmfence1 - libxslt1-dev - libxslt1.1 - libxss-dev - libxss1 - libxt-dev - libxt6 - libxtst-dev - libxtst6 - libxxf86vm-dev - libxxf86vm1 - libzstd1 - linux-libc-dev - mesa-common-dev - shared-mime-info - uuid-dev - wayland-protocols - x11proto-composite-dev - x11proto-damage-dev - x11proto-dev - x11proto-fixes-dev - x11proto-input-dev - x11proto-kb-dev - x11proto-randr-dev - x11proto-record-dev - x11proto-render-dev - x11proto-scrnsaver-dev - x11proto-xext-dev - x11proto-xinerama-dev - zlib1g - zlib1g-dev -" - -DEBIAN_PACKAGES_AMD64=" - libgtk-4-1 - libgtk-4-dev - liblsan0 - libtsan0 -" - -DEBIAN_PACKAGES_X86=" - libasan6 - libcilkrts5 - libdrm-intel1 - libgtk-4-1 - libgtk-4-dev - libitm1 - libmpx2 - libquadmath0 - libubsan1 - valgrind -" - -DEBIAN_PACKAGES_ARM=" - libasan6 - libdrm-etnaviv1 - libdrm-exynos1 - libdrm-freedreno1 - libdrm-omap1 - libdrm-tegra0 - libgtk-4-1 - libgtk-4-dev - libubsan1 - valgrind -" - -DEBIAN_PACKAGES_ARM64=" - libasan6 - libdrm-etnaviv1 - libdrm-freedreno1 - libdrm-tegra0 - libgmp10 - libgtk-4-1 - libgtk-4-dev - libitm1 - liblsan0 - libthai0 - libtsan0 - libubsan1 - valgrind -" - -DEBIAN_PACKAGES_ARMEL=" - libasan6 - libdrm-exynos1 - libdrm-freedreno1 - libdrm-omap1 - libdrm-tegra0 - libgtk-4-1 - libgtk-4-dev - libubsan1 -" - -DEBIAN_PACKAGES_MIPS64EL=" - valgrind -" - -. "${SCRIPT_DIR}/sysroot-creator.sh" diff --git a/build/linux/sysroot_scripts/sysroot-creator.sh b/build/linux/sysroot_scripts/sysroot-creator.sh old mode 100644 new mode 100755 index 63d5baa..71a9ade --- a/build/linux/sysroot_scripts/sysroot-creator.sh +++ b/build/linux/sysroot_scripts/sysroot-creator.sh @@ -1,24 +1,15 @@ +#!/bin/bash + # Copyright 2014 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -# -# This script should not be run directly but sourced by the other -# scripts (e.g. sysroot-creator-bullseye.sh). Its up to the parent scripts -# to define certain environment variables: e.g. -# DISTRO=debian -# DIST=bullseye -# # Similar in syntax to /etc/apt/sources.list -# APT_SOURCES_LIST=( "http://ftp.us.debian.org/debian/ bullseye main" ) -# KEYRING_FILE=debian-archive-bullseye-stable.gpg -# DEBIAN_PACKAGES="gcc libz libssl" - -#@ This script builds Debian/Ubuntu sysroot images for building Google Chrome. + +#@ This script builds Debian sysroot images for building Google Chrome. #@ -#@ Generally this script is invoked as: -#@ sysroot-creator-.sh * -#@ Available modes are shown below. +#@ Usage: +#@ sysroot-creator.sh {build,upload} \ +#@ {amd64,i386,armhf,arm64,armel,mipsel,mips64el} #@ -#@ List of modes: ###################################################################### # Config @@ -27,30 +18,499 @@ set -o nounset set -o errexit -SCRIPT_DIR=$(cd $(dirname $0) && pwd) - -if [ -z "${DIST:-}" ]; then - echo "error: DIST not defined" - exit 1 -fi - -if [ -z "${KEYRING_FILE:-}" ]; then - echo "error: KEYRING_FILE not defined" - exit 1 -fi - -if [ -z "${DEBIAN_PACKAGES:-}" ]; then - echo "error: DEBIAN_PACKAGES not defined" - exit 1 -fi - -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} +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +DISTRO=debian +RELEASE=bullseye + +# This number is appended to the sysroot key to cause full rebuilds. It +# should be incremented when removing packages or patching existing packages. +# It should not be incremented when adding packages. +SYSROOT_RELEASE=2 + +ARCHIVE_TIMESTAMP=20230611T210420Z + +ARCHIVE_URL="https://snapshot.debian.org/archive/debian/$ARCHIVE_TIMESTAMP/" +APT_SOURCES_LIST=( + # Debian 12 (Bookworm) is needed for GTK4. It should be kept before bullseye + # so that bullseye takes precedence. + "${ARCHIVE_URL} bookworm main" + "${ARCHIVE_URL} bookworm-updates main" + + # This mimics a sources.list from bullseye. + "${ARCHIVE_URL} bullseye main contrib non-free" + "${ARCHIVE_URL} bullseye-updates main contrib non-free" + "${ARCHIVE_URL} bullseye-backports main contrib non-free" +) + +# gpg keyring file generated using generate_keyring.sh +KEYRING_FILE="${SCRIPT_DIR}/keyring.gpg" + +# Sysroot packages: these are the packages needed to build chrome. +DEBIAN_PACKAGES="\ + comerr-dev + krb5-multidev + libasound2 + libasound2-dev + libasyncns0 + libatk-bridge2.0-0 + libatk-bridge2.0-dev + libatk1.0-0 + libatk1.0-dev + libatomic1 + libatspi2.0-0 + libatspi2.0-dev + libattr1 + libaudit1 + libavahi-client3 + libavahi-common3 + libb2-1 + libblkid-dev + libblkid1 + libbluetooth-dev + libbluetooth3 + libbrotli-dev + libbrotli1 + libbsd0 + libc6 + libc6-dev + libcairo-gobject2 + libcairo-script-interpreter2 + libcairo2 + libcairo2-dev + libcap-dev + libcap-ng0 + libcap2 + libcloudproviders0 + libcolord2 + libcom-err2 + libcrypt-dev + libcrypt1 + libcups2 + libcups2-dev + libcupsimage2 + libcupsimage2-dev + libcurl3-gnutls + libcurl4-gnutls-dev + libdatrie-dev + libdatrie1 + libdb5.3 + libdbus-1-3 + libdbus-1-dev + libdbus-glib-1-2 + libdbusmenu-glib-dev + libdbusmenu-glib4 + libdbusmenu-gtk3-4 + libdbusmenu-gtk4 + libdeflate-dev + libdeflate0 + libdouble-conversion3 + libdrm-amdgpu1 + libdrm-dev + libdrm-nouveau2 + libdrm-radeon1 + libdrm2 + libegl-dev + libegl1 + libegl1-mesa + libegl1-mesa-dev + libelf-dev + libelf1 + libepoxy-dev + libepoxy0 + libevdev-dev + libevdev2 + libevent-2.1-7 + libexpat1 + libexpat1-dev + libffi-dev + libffi7 + libflac-dev + libflac8 + libfontconfig-dev + libfontconfig1 + libfreetype-dev + libfreetype6 + libfribidi-dev + libfribidi0 + libgbm-dev + libgbm1 + libgcc-10-dev + libgcc-s1 + libgcrypt20 + libgcrypt20-dev + libgdk-pixbuf-2.0-0 + libgdk-pixbuf-2.0-dev + libgl-dev + libgl1 + libgl1-mesa-dev + libgl1-mesa-glx + libglapi-mesa + libgles-dev + libgles1 + libgles2 + libglib2.0-0 + libglib2.0-dev + libglvnd-dev + libglvnd0 + libglx-dev + libglx0 + libgmp10 + libgnutls-dane0 + libgnutls-openssl27 + libgnutls28-dev + libgnutls30 + libgnutlsxx28 + libgomp1 + libgpg-error-dev + libgpg-error0 + libgraphene-1.0-0 + libgraphene-1.0-dev + libgraphite2-3 + libgraphite2-dev + libgssapi-krb5-2 + libgssrpc4 + libgtk-3-0 + libgtk-3-dev + libgtk-4-1 + libgtk-4-dev + libgtk2.0-0 + libgudev-1.0-0 + libharfbuzz-dev + libharfbuzz-gobject0 + libharfbuzz-icu0 + libharfbuzz0b + libhogweed6 + libice6 + libicu-le-hb0 + libicu67 + libidl-2-0 + libidn11 + libidn2-0 + libinput-dev + libinput10 + libjbig-dev + libjbig0 + libjpeg62-turbo + libjpeg62-turbo-dev + libjson-glib-1.0-0 + libjsoncpp-dev + libjsoncpp24 + libk5crypto3 + libkadm5clnt-mit12 + libkadm5srv-mit12 + libkdb5-10 + libkeyutils1 + libkrb5-3 + libkrb5-dev + libkrb5support0 + liblcms2-2 + libldap-2.4-2 + liblerc4 + libltdl7 + liblz4-1 + liblzma5 + liblzo2-2 + libmd0 + libmd4c0 + libminizip-dev + libminizip1 + libmount-dev + libmount1 + libmtdev1 + libncurses-dev + libncurses6 + libncursesw6 + libnettle8 + libnghttp2-14 + libnsl2 + libnspr4 + libnspr4-dev + libnss-db + libnss3 + libnss3-dev + libogg-dev + libogg0 + libopengl0 + libopus-dev + libopus0 + libp11-kit0 + libpam0g + libpam0g-dev + libpango-1.0-0 + libpango1.0-dev + libpangocairo-1.0-0 + libpangoft2-1.0-0 + libpangox-1.0-0 + libpangoxft-1.0-0 + libpci-dev + libpci3 + libpciaccess0 + libpcre16-3 + libpcre2-16-0 + libpcre2-32-0 + libpcre2-8-0 + libpcre2-dev + libpcre2-posix2 + libpcre3 + libpcre3-dev + libpcre32-3 + libpcrecpp0v5 + libpipewire-0.3-0 + libpipewire-0.3-dev + libpixman-1-0 + libpixman-1-dev + libpng-dev + libpng16-16 + libproxy1v5 + libpsl5 + libpthread-stubs0-dev + libpulse-dev + libpulse-mainloop-glib0 + libpulse0 + libqt5concurrent5 + libqt5core5a + libqt5dbus5 + libqt5gui5 + libqt5network5 + libqt5printsupport5 + libqt5sql5 + libqt5test5 + libqt5widgets5 + libqt5xml5 + libqt6concurrent6 + libqt6core6 + libqt6dbus6 + libqt6gui6 + libqt6network6 + libqt6opengl6 + libqt6openglwidgets6 + libqt6printsupport6 + libqt6sql6 + libqt6test6 + libqt6widgets6 + libqt6xml6 + libre2-9 + libre2-dev + librest-0.7-0 + librtmp1 + libsasl2-2 + libselinux1 + libselinux1-dev + libsepol1 + libsepol1-dev + libsm6 + libsnappy-dev + libsnappy1v5 + libsndfile1 + libsoup-gnome2.4-1 + libsoup2.4-1 + libspa-0.2-dev + libspeechd-dev + libspeechd2 + libsqlite3-0 + libssh2-1 + libssl-dev + libssl1.1 + libstdc++-10-dev + libstdc++6 + libsystemd-dev + libsystemd0 + libtasn1-6 + libthai-dev + libthai0 + libtiff-dev + libtiff5 + libtiff6 + libtiffxx5 + libtinfo6 + libtirpc3 + libts0 + libudev-dev + libudev1 + libunbound8 + libunistring2 + libutempter-dev + libutempter0 + libuuid1 + libva-dev + libva-drm2 + libva-glx2 + libva-wayland2 + libva-x11-2 + libva2 + libvorbis0a + libvorbisenc2 + libvulkan-dev + libvulkan1 + libwacom2 + libwayland-bin + libwayland-client0 + libwayland-cursor0 + libwayland-dev + libwayland-egl-backend-dev + libwayland-egl1 + libwayland-egl1-mesa + libwayland-server0 + libwebp-dev + libwebp6 + libwebp7 + libwebpdemux2 + libwebpmux3 + libwrap0 + libx11-6 + libx11-dev + libx11-xcb-dev + libx11-xcb1 + libxau-dev + libxau6 + libxcb-dri2-0 + libxcb-dri2-0-dev + libxcb-dri3-0 + libxcb-dri3-dev + libxcb-glx0 + libxcb-glx0-dev + libxcb-icccm4 + libxcb-image0 + libxcb-image0-dev + libxcb-keysyms1 + libxcb-present-dev + libxcb-present0 + libxcb-randr0 + libxcb-randr0-dev + libxcb-render-util0 + libxcb-render-util0-dev + libxcb-render0 + libxcb-render0-dev + libxcb-shape0 + libxcb-shape0-dev + libxcb-shm0 + libxcb-shm0-dev + libxcb-sync-dev + libxcb-sync1 + libxcb-util-dev + libxcb-util1 + libxcb-xfixes0 + libxcb-xfixes0-dev + libxcb-xinerama0 + libxcb-xinput0 + libxcb-xkb1 + libxcb1 + libxcb1-dev + libxcomposite-dev + libxcomposite1 + libxcursor-dev + libxcursor1 + libxdamage-dev + libxdamage1 + libxdmcp-dev + libxdmcp6 + libxext-dev + libxext6 + libxfixes-dev + libxfixes3 + libxft-dev + libxft2 + libxi-dev + libxi6 + libxinerama-dev + libxinerama1 + libxkbcommon-dev + libxkbcommon-x11-0 + libxkbcommon0 + libxml2 + libxml2-dev + libxrandr-dev + libxrandr2 + libxrender-dev + libxrender1 + libxshmfence-dev + libxshmfence1 + libxslt1-dev + libxslt1.1 + libxss-dev + libxss1 + libxt-dev + libxt6 + libxtst-dev + libxtst6 + libxxf86vm-dev + libxxf86vm1 + libzstd1 + linux-libc-dev + mesa-common-dev + qt6-base-dev + qt6-base-dev-tools + qtbase5-dev + qtbase5-dev-tools + shared-mime-info + uuid-dev + wayland-protocols + x11proto-dev + zlib1g + zlib1g-dev +" + +DEBIAN_PACKAGES_AMD64=" + libasan6 + libdrm-intel1 + libitm1 + liblsan0 + libquadmath0 + libtsan0 + libubsan1 + valgrind +" + +DEBIAN_PACKAGES_I386=" + libasan6 + libdrm-intel1 + libitm1 + libquadmath0 + libubsan1 + valgrind +" + +DEBIAN_PACKAGES_ARMHF=" + libasan6 + libdrm-etnaviv1 + libdrm-exynos1 + libdrm-freedreno1 + libdrm-omap1 + libdrm-tegra0 + libubsan1 + valgrind +" + +DEBIAN_PACKAGES_ARM64=" + libasan6 + libdrm-etnaviv1 + libdrm-freedreno1 + libdrm-tegra0 + libgmp10 + libitm1 + liblsan0 + libthai0 + libtsan0 + libubsan1 + valgrind +" + +DEBIAN_PACKAGES_ARMEL=" + libasan6 + libdrm-exynos1 + libdrm-freedreno1 + libdrm-omap1 + libdrm-tegra0 + libubsan1 +" + +DEBIAN_PACKAGES_MIPSEL=" +" + +DEBIAN_PACKAGES_MIPS64EL=" + valgrind +" readonly REQUIRED_TOOLS="curl xzcat" @@ -62,15 +522,6 @@ readonly PACKAGES_EXT=xz readonly RELEASE_FILE="Release" readonly RELEASE_FILE_GPG="Release.gpg" -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" - - ###################################################################### # Helper ###################################################################### @@ -147,46 +598,51 @@ DownloadOrCopy() { fi } - SetEnvironmentVariables() { - case $1 in - *Amd64) - ARCH=AMD64 + case $ARCH in + amd64) + TRIPLE=x86_64-linux-gnu + DEBIAN_PACKAGES_ARCH="${DEBIAN_PACKAGES_AMD64}" ;; - *I386) - ARCH=I386 + i386) + TRIPLE=i386-linux-gnu + DEBIAN_PACKAGES_ARCH="${DEBIAN_PACKAGES_I386}" ;; - *Mips64el) - ARCH=MIPS64EL + armhf) + TRIPLE=arm-linux-gnueabihf + DEBIAN_PACKAGES_ARCH="${DEBIAN_PACKAGES_ARMHF}" ;; - *Mips) - ARCH=MIPS + arm64) + TRIPLE=aarch64-linux-gnu + DEBIAN_PACKAGES_ARCH="${DEBIAN_PACKAGES_ARM64}" ;; - *ARM) - ARCH=ARM + armel) + TRIPLE=arm-linux-gnueabi + DEBIAN_PACKAGES_ARCH="${DEBIAN_PACKAGES_ARMEL}" ;; - *ARM64) - ARCH=ARM64 + mipsel) + TRIPLE=mipsel-linux-gnu + DEBIAN_PACKAGES_ARCH="${DEBIAN_PACKAGES_MIPSEL}" ;; - *ARMEL) - ARCH=ARMEL + mips64el) + TRIPLE=mips64el-linux-gnuabi64 + DEBIAN_PACKAGES_ARCH="${DEBIAN_PACKAGES_MIPS64EL}" ;; *) - echo "ERROR: Unable to determine architecture based on: $1" + echo "ERROR: Unsupported architecture: $ARCH" + Usage exit 1 ;; esac - ARCH_LOWER=$(echo $ARCH | tr '[:upper:]' '[:lower:]') } - # some sanity checks to make sure this script is run from the right place # with the right tools SanityCheck() { Banner "Sanity Checks" local chrome_dir=$(cd "${SCRIPT_DIR}/../../.." && pwd) - BUILD_DIR="${chrome_dir}/out/sysroot-build/${DIST}" + BUILD_DIR="${chrome_dir}/out/sysroot-build/${RELEASE}" mkdir -p ${BUILD_DIR} echo "Using build directory: ${BUILD_DIR}" @@ -199,8 +655,8 @@ SanityCheck() { done # This is where the staging sysroot is. - INSTALL_ROOT="${BUILD_DIR}/${DIST}_${ARCH_LOWER}_staging" - TARBALL="${BUILD_DIR}/${DISTRO}_${DIST}_${ARCH_LOWER}_sysroot.tar.xz" + INSTALL_ROOT="${BUILD_DIR}/${RELEASE}_${ARCH}_staging" + TARBALL="${BUILD_DIR}/${DISTRO}_${RELEASE}_${ARCH}_sysroot.tar.xz" if ! mkdir -p "${INSTALL_ROOT}" ; then echo "ERROR: ${INSTALL_ROOT} can't be created." @@ -259,57 +715,24 @@ GeneratePackageListDist() { local dist="$2" shift 2 while (( "$#" )); do - GeneratePackageListDistRepo "$arch" "$repo" "$dist" "$1" - shift + GeneratePackageListDistRepo "$arch" "$repo" "$dist" "$1" + shift done } -GeneratePackageListCommon() { +GeneratePackageList() { local output_file="$1" local arch="$2" local packages="$3" - local list_base="${BUILD_DIR}/Packages.${DIST}_${arch}" + local list_base="${BUILD_DIR}/Packages.${RELEASE}_${arch}" > "${list_base}" # Create (or truncate) a zero-length file. printf '%s\n' "${APT_SOURCES_LIST[@]}" | while read source; do GeneratePackageListDist "${arch}" "${source}" done - GeneratePackageList "${list_base}" "${output_file}" "${packages}" -} - -GeneratePackageListAmd64() { - GeneratePackageListCommon "$1" amd64 "${DEBIAN_PACKAGES} - ${DEBIAN_PACKAGES_X86:=} ${DEBIAN_PACKAGES_AMD64:=}" -} - -GeneratePackageListI386() { - GeneratePackageListCommon "$1" i386 "${DEBIAN_PACKAGES} - ${DEBIAN_PACKAGES_X86:=}" -} - -GeneratePackageListARM() { - GeneratePackageListCommon "$1" armhf "${DEBIAN_PACKAGES} - ${DEBIAN_PACKAGES_ARM:=}" -} - -GeneratePackageListARM64() { - GeneratePackageListCommon "$1" arm64 "${DEBIAN_PACKAGES} - ${DEBIAN_PACKAGES_ARM64:=}" -} - -GeneratePackageListARMEL() { - GeneratePackageListCommon "$1" armel "${DEBIAN_PACKAGES} - ${DEBIAN_PACKAGES_ARMEL:=}" -} - -GeneratePackageListMips() { - GeneratePackageListCommon "$1" mipsel "${DEBIAN_PACKAGES}" -} - -GeneratePackageListMips64el() { - GeneratePackageListCommon "$1" mips64el "${DEBIAN_PACKAGES} - ${DEBIAN_PACKAGES_MIPS64EL:=}" + GeneratePackageListImpl "${list_base}" "${output_file}" \ + "${DEBIAN_PACKAGES} ${packages}" } StripChecksumsFromPackageList() { @@ -321,13 +744,11 @@ StripChecksumsFromPackageList() { # ###################################################################### -HacksAndPatchesCommon() { - local arch=$1 - local os=$2 +HacksAndPatches() { Banner "Misc Hacks & Patches" # Remove an unnecessary dependency on qtchooser. - rm "${INSTALL_ROOT}/usr/lib/${arch}-${os}/qt-default/qtchooser/default.conf" + rm "${INSTALL_ROOT}/usr/lib/${TRIPLE}/qt-default/qtchooser/default.conf" # libxcomposite1 is missing a symbols file. cp "${SCRIPT_DIR}/libxcomposite1-symbols" \ @@ -347,72 +768,31 @@ HacksAndPatchesCommon() { "${fcntl_h}" # Do not use pthread_cond_clockwait as it was introduced in glibc 2.30. - local cppconfig_h="${usr_include}/${arch}-${os}/c++/10/bits/c++config.h" + local cppconfig_h="${usr_include}/${TRIPLE}/c++/10/bits/c++config.h" sed -i 's|\(#define\s\+_GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT\)|// \1|' \ "${cppconfig_h}" + # Include limits.h in stdlib.h to fix an ODR issue + # (https://sourceware.org/bugzilla/show_bug.cgi?id=30516) + local stdlib_h="${usr_include}/stdlib.h" + sed -i '/#include /a #include ' "${stdlib_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/* \ + mv ${INSTALL_ROOT}/usr/lib/${TRIPLE}/pkgconfig/* \ ${INSTALL_ROOT}/usr/lib/pkgconfig -} - - -ReversionGlibc() { - local arch=$1 - local os=$2 # Avoid requiring unsupported glibc versions. "${SCRIPT_DIR}/reversion_glibc.py" \ - "${INSTALL_ROOT}/lib/${arch}-${os}/libc.so.6" + "${INSTALL_ROOT}/lib/${TRIPLE}/libc.so.6" "${SCRIPT_DIR}/reversion_glibc.py" \ - "${INSTALL_ROOT}/lib/${arch}-${os}/libm.so.6" + "${INSTALL_ROOT}/lib/${TRIPLE}/libm.so.6" "${SCRIPT_DIR}/reversion_glibc.py" \ - "${INSTALL_ROOT}/lib/${arch}-${os}/libcrypt.so.1" -} - - -HacksAndPatchesAmd64() { - HacksAndPatchesCommon x86_64 linux-gnu - ReversionGlibc x86_64 linux-gnu -} - - -HacksAndPatchesI386() { - HacksAndPatchesCommon i386 linux-gnu - ReversionGlibc i386 linux-gnu -} - - -HacksAndPatchesARM() { - HacksAndPatchesCommon arm linux-gnueabihf - ReversionGlibc arm linux-gnueabihf -} - -HacksAndPatchesARM64() { - HacksAndPatchesCommon aarch64 linux-gnu - ReversionGlibc aarch64 linux-gnu -} - -HacksAndPatchesARMEL() { - HacksAndPatchesCommon arm linux-gnueabi - ReversionGlibc arm linux-gnueabi -} - -HacksAndPatchesMips() { - HacksAndPatchesCommon mipsel linux-gnu - ReversionGlibc mipsel linux-gnu + "${INSTALL_ROOT}/lib/${TRIPLE}/libcrypt.so.1" } - -HacksAndPatchesMips64el() { - HacksAndPatchesCommon mips64el linux-gnuabi64 - ReversionGlibc mips64el linux-gnuabi64 -} - - InstallIntoSysroot() { Banner "Install Libs And Headers Into Jail" @@ -462,7 +842,7 @@ CleanupJailSymlinks() { SAVEDPWD=$(pwd) cd ${INSTALL_ROOT} local libdirs="lib usr/lib" - if [ "${ARCH}" != "MIPS" ]; then + if [ -d lib64 ]; then libdirs="${libdirs} lib64" fi @@ -491,13 +871,11 @@ CleanupJailSymlinks() { } -VerifyLibraryDepsCommon() { - local arch=$1 - local os=$2 +VerifyLibraryDeps() { local find_dirs=( "${INSTALL_ROOT}/lib/" - "${INSTALL_ROOT}/lib/${arch}-${os}/" - "${INSTALL_ROOT}/usr/lib/${arch}-${os}/" + "${INSTALL_ROOT}/lib/${TRIPLE}/" + "${INSTALL_ROOT}/usr/lib/${TRIPLE}/" ) local needed_libs="$( find ${find_dirs[*]} -name "*\.so*" -type f -exec file {} \; | \ @@ -515,194 +893,19 @@ VerifyLibraryDepsCommon() { fi } - -VerifyLibraryDepsAmd64() { - VerifyLibraryDepsCommon x86_64 linux-gnu -} - - -VerifyLibraryDepsI386() { - VerifyLibraryDepsCommon i386 linux-gnu -} - - -VerifyLibraryDepsARM() { - VerifyLibraryDepsCommon arm linux-gnueabihf -} - - -VerifyLibraryDepsARM64() { - VerifyLibraryDepsCommon aarch64 linux-gnu -} - -VerifyLibraryDepsARMEL() { - VerifyLibraryDepsCommon arm linux-gnueabi -} - -VerifyLibraryDepsMips() { - VerifyLibraryDepsCommon mipsel linux-gnu -} - - -VerifyLibraryDepsMips64el() { - VerifyLibraryDepsCommon mips64el linux-gnuabi64 -} - - -#@ -#@ BuildSysrootAmd64 -#@ -#@ Build everything and package it -BuildSysrootAmd64() { - if [ "$HAS_ARCH_AMD64" = "0" ]; then - return - fi - ClearInstallDir - local package_file="${DEBIAN_DEP_LIST_AMD64}" - GeneratePackageListAmd64 "$package_file" - local files_and_sha256sums="$(cat ${package_file})" - StripChecksumsFromPackageList "$package_file" - InstallIntoSysroot ${files_and_sha256sums} - HacksAndPatchesAmd64 - CleanupJailSymlinks - VerifyLibraryDepsAmd64 - CreateTarBall -} - -#@ -#@ BuildSysrootI386 -#@ -#@ Build everything and package it -BuildSysrootI386() { - if [ "$HAS_ARCH_I386" = "0" ]; then - return - fi - ClearInstallDir - local package_file="${DEBIAN_DEP_LIST_I386}" - GeneratePackageListI386 "$package_file" - local files_and_sha256sums="$(cat ${package_file})" - StripChecksumsFromPackageList "$package_file" - InstallIntoSysroot ${files_and_sha256sums} - HacksAndPatchesI386 - CleanupJailSymlinks - VerifyLibraryDepsI386 - CreateTarBall -} - -#@ -#@ BuildSysrootARM -#@ -#@ Build everything and package it -BuildSysrootARM() { - if [ "$HAS_ARCH_ARM" = "0" ]; then - return - fi - ClearInstallDir - local package_file="${DEBIAN_DEP_LIST_ARM}" - GeneratePackageListARM "$package_file" - local files_and_sha256sums="$(cat ${package_file})" - StripChecksumsFromPackageList "$package_file" - InstallIntoSysroot ${files_and_sha256sums} - HacksAndPatchesARM - CleanupJailSymlinks - VerifyLibraryDepsARM - CreateTarBall -} - -#@ -#@ BuildSysrootARM64 -#@ -#@ Build everything and package it -BuildSysrootARM64() { - if [ "$HAS_ARCH_ARM64" = "0" ]; then - return - fi - ClearInstallDir - local package_file="${DEBIAN_DEP_LIST_ARM64}" - GeneratePackageListARM64 "$package_file" - local files_and_sha256sums="$(cat ${package_file})" - StripChecksumsFromPackageList "$package_file" - InstallIntoSysroot ${files_and_sha256sums} - HacksAndPatchesARM64 - CleanupJailSymlinks - VerifyLibraryDepsARM64 - CreateTarBall -} - -#@ -#@ 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} - HacksAndPatchesARMEL - CleanupJailSymlinks - VerifyLibraryDepsARMEL - CreateTarBall -} - -#@ -#@ BuildSysrootMips -#@ -#@ Build everything and package it -BuildSysrootMips() { - if [ "$HAS_ARCH_MIPS" = "0" ]; then - return - fi - ClearInstallDir - local package_file="${DEBIAN_DEP_LIST_MIPS}" - GeneratePackageListMips "$package_file" - local files_and_sha256sums="$(cat ${package_file})" - StripChecksumsFromPackageList "$package_file" - InstallIntoSysroot ${files_and_sha256sums} - HacksAndPatchesMips - CleanupJailSymlinks - VerifyLibraryDepsMips - CreateTarBall -} - -#@ -#@ BuildSysrootMips64el -#@ -#@ Build everything and package it -BuildSysrootMips64el() { - if [ "$HAS_ARCH_MIPS64EL" = "0" ]; then - return - fi +BuildSysroot() { ClearInstallDir - local package_file="${DEBIAN_DEP_LIST_MIPS64EL}" - GeneratePackageListMips64el "$package_file" + local package_file="generated_package_lists/${RELEASE}.${ARCH}" + GeneratePackageList "${package_file}" $ARCH "${DEBIAN_PACKAGES_ARCH}" local files_and_sha256sums="$(cat ${package_file})" StripChecksumsFromPackageList "$package_file" InstallIntoSysroot ${files_and_sha256sums} - HacksAndPatchesMips64el + HacksAndPatches CleanupJailSymlinks - VerifyLibraryDepsMips64el + VerifyLibraryDeps CreateTarBall } -#@ -#@ BuildSysrootAll -#@ -#@ Build sysroot images for all architectures -BuildSysrootAll() { - RunCommand BuildSysrootAmd64 - RunCommand BuildSysrootI386 - RunCommand BuildSysrootARM - RunCommand BuildSysrootARM64 - RunCommand BuildSysrootARMEL - RunCommand BuildSysrootMips - RunCommand BuildSysrootMips64el -} - UploadSysroot() { local sha=$(sha1sum "${TARBALL}" | awk '{print $1;}') set -x @@ -711,91 +914,6 @@ UploadSysroot() { set +x } -#@ -#@ UploadSysrootAmd64 -#@ -UploadSysrootAmd64() { - if [ "$HAS_ARCH_AMD64" = "0" ]; then - return - fi - UploadSysroot "$@" -} - -#@ -#@ UploadSysrootI386 -#@ -UploadSysrootI386() { - if [ "$HAS_ARCH_I386" = "0" ]; then - return - fi - UploadSysroot "$@" -} - -#@ -#@ UploadSysrootARM -#@ -UploadSysrootARM() { - if [ "$HAS_ARCH_ARM" = "0" ]; then - return - fi - UploadSysroot "$@" -} - -#@ -#@ UploadSysrootARM64 -#@ -UploadSysrootARM64() { - if [ "$HAS_ARCH_ARM64" = "0" ]; then - return - fi - UploadSysroot "$@" -} - -#@ -#@ UploadSysrootARMEL -#@ -UploadSysrootARMEL() { - if [ "$HAS_ARCH_ARMEL" = "0" ]; then - return - fi - UploadSysroot "$@" -} - -#@ -#@ UploadSysrootMips -#@ -UploadSysrootMips() { - if [ "$HAS_ARCH_MIPS" = "0" ]; then - return - fi - UploadSysroot "$@" -} - -#@ -#@ UploadSysrootMips64el -#@ -UploadSysrootMips64el() { - if [ "$HAS_ARCH_MIPS64EL" = "0" ]; then - return - fi - UploadSysroot "$@" -} - -#@ -#@ UploadSysrootAll -#@ -#@ Upload sysroot image for all architectures -UploadSysrootAll() { - RunCommand UploadSysrootAmd64 "$@" - RunCommand UploadSysrootI386 "$@" - RunCommand UploadSysrootARM "$@" - RunCommand UploadSysrootARM64 "$@" - RunCommand UploadSysrootARMEL "$@" - RunCommand UploadSysrootMips "$@" - RunCommand UploadSysrootMips64el "$@" - -} - # # CheckForDebianGPGKeyring # @@ -849,12 +967,12 @@ VerifyPackageListing() { } # -# GeneratePackageList +# GeneratePackageListImpl # # Looks up package names in ${BUILD_DIR}/Packages and write list of URLs # to output file. # -GeneratePackageList() { +GeneratePackageListImpl() { local input_file="$1" local output_file="$2" echo "Updating: ${output_file} from ${input_file}" @@ -885,79 +1003,25 @@ GeneratePackageList() { sort "$output_file" -o "$output_file" } -#@ -#@ PrintArchitectures -#@ -#@ Prints supported architectures. -PrintArchitectures() { - if [ "$HAS_ARCH_AMD64" = "1" ]; then - echo Amd64 - fi - if [ "$HAS_ARCH_I386" = "1" ]; then - echo I386 - fi - if [ "$HAS_ARCH_ARM" = "1" ]; then - echo ARM - fi - 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 - if [ "$HAS_ARCH_MIPS64EL" = "1" ]; then - echo Mips64el - fi -} - -#@ -#@ PrintDistro -#@ -#@ Prints distro. eg: ubuntu -PrintDistro() { - echo ${DISTRO} -} - -#@ -#@ PrintRelease -#@ -#@ Prints disto release. eg: bullseye -PrintRelease() { - echo ${DIST} -} - -#@ -#@ PrintKey -#@ -#@ Prints sysroot key identifier. -PrintKey() { - echo "${ARCHIVE_TIMESTAMP}-${SYSROOT_RELEASE}" -} - -RunCommand() { - SetEnvironmentVariables "$1" - SanityCheck - "$@" -} - -if [ $# -eq 0 ] ; then - echo "ERROR: you must specify a mode on the commandline" - echo +if [ $# -ne 2 ]; then Usage exit 1 -elif [ "$(type -t $1)" != "function" ]; then - echo "ERROR: unknown function '$1'." >&2 - echo "For help, try:" - echo " $0 help" - exit 1 else ChangeDirectory - if echo $1 | grep -qs --regexp='\(^Print\)\|\(All$\)'; then - "$@" - else - RunCommand "$@" - fi + ARCH=$2 + SetEnvironmentVariables + SanityCheck + case "$1" in + build) + BuildSysroot + ;; + upload) + UploadSysroot + ;; + *) + echo "ERROR: Invalid command: $1" + Usage + exit 1 + ;; + esac fi diff --git a/build/linux/sysroot_scripts/sysroots.json b/build/linux/sysroot_scripts/sysroots.json index 355c350..156d4c6 100644 --- a/build/linux/sysroot_scripts/sysroots.json +++ b/build/linux/sysroot_scripts/sysroots.json @@ -1,44 +1,51 @@ { "bullseye_amd64": { - "Key": "20221105T211506Z-0", - "Sha1Sum": "3bdb3503702d35520d101fc5eec9a8ab5353149f", + "Key": "20230611T210420Z-2", + "Sha1Sum": "4c00ba2ad61ca7cc39392f192aa39420e086777c", "SysrootDir": "debian_bullseye_amd64-sysroot", - "Tarball": "debian_bullseye_amd64_sysroot.tar.xz" - }, - "bullseye_arm": { - "Key": "20221105T211506Z-0", - "Sha1Sum": "d160892586b87782fef76ccc651fa2024a62bdcd", - "SysrootDir": "debian_bullseye_arm-sysroot", - "Tarball": "debian_bullseye_arm_sysroot.tar.xz" + "Tarball": "debian_bullseye_amd64_sysroot.tar.xz", + "URL": "https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain" }, "bullseye_arm64": { - "Key": "20221105T211506Z-1", - "Sha1Sum": "6553f74237ef4a99240a740f0084e1ade71aec6f", + "Key": "20230611T210420Z-2", + "Sha1Sum": "41a6c8dec4c4304d6509e30cbaf9218dffb4438e", "SysrootDir": "debian_bullseye_arm64-sysroot", - "Tarball": "debian_bullseye_arm64_sysroot.tar.xz" + "Tarball": "debian_bullseye_arm64_sysroot.tar.xz", + "URL": "https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain" }, "bullseye_armel": { - "Key": "20221105T211506Z-0", - "Sha1Sum": "bd0167a99fa282fa54835a635d2d0ac18b7ab8a5", + "Key": "20230611T210420Z-2", + "Sha1Sum": "bcff5c5a4060f3be7bff28aa9ff28c100b70a858", "SysrootDir": "debian_bullseye_armel-sysroot", - "Tarball": "debian_bullseye_armel_sysroot.tar.xz" + "Tarball": "debian_bullseye_armel_sysroot.tar.xz", + "URL": "https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain" + }, + "bullseye_armhf": { + "Key": "20230611T210420Z-2", + "Sha1Sum": "c153bf1027a67eec0f6ea2efa190e29c9c06e603", + "SysrootDir": "debian_bullseye_armhf-sysroot", + "Tarball": "debian_bullseye_armhf_sysroot.tar.xz", + "URL": "https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain" }, "bullseye_i386": { - "Key": "20221105T211506Z-0", - "Sha1Sum": "de629dcc11a6ab1b11e6d66c4180a959c6290097", + "Key": "20230611T210420Z-2", + "Sha1Sum": "cfba9004de1ace04f9604c13c30abad3be90e58f", "SysrootDir": "debian_bullseye_i386-sysroot", - "Tarball": "debian_bullseye_i386_sysroot.tar.xz" - }, - "bullseye_mips": { - "Key": "20221105T211506Z-0", - "Sha1Sum": "6f27b4f65d8e190864e7c18fa281ffb418cf2e43", - "SysrootDir": "debian_bullseye_mips-sysroot", - "Tarball": "debian_bullseye_mips_sysroot.tar.xz" + "Tarball": "debian_bullseye_i386_sysroot.tar.xz", + "URL": "https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain" }, "bullseye_mips64el": { - "Key": "20221105T211506Z-0", - "Sha1Sum": "817d0905f294c9c5af828fa5c5b814dbe9610a24", + "Key": "20230611T210420Z-2", + "Sha1Sum": "3ce49d1c6b5fef17ad512f2d663a175829ae0b72", "SysrootDir": "debian_bullseye_mips64el-sysroot", - "Tarball": "debian_bullseye_mips64el_sysroot.tar.xz" + "Tarball": "debian_bullseye_mips64el_sysroot.tar.xz", + "URL": "https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain" + }, + "bullseye_mipsel": { + "Key": "20230611T210420Z-2", + "Sha1Sum": "1b857baabd7999ff0d6949a8973f896836ac45ac", + "SysrootDir": "debian_bullseye_mipsel-sysroot", + "Tarball": "debian_bullseye_mipsel_sysroot.tar.xz", + "URL": "https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain" } } diff --git a/build/linux/sysroot_scripts/update-archive-timestamp.sh b/build/linux/sysroot_scripts/update-archive-timestamp.sh index ff5adf1..63b7dab 100755 --- a/build/linux/sysroot_scripts/update-archive-timestamp.sh +++ b/build/linux/sysroot_scripts/update-archive-timestamp.sh @@ -3,7 +3,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -# This script updates sysroot-creator-*.sh with the timestamp of the latest +# This script updates sysroot-creator.sh with the timestamp of the latest # snapshot from snapshot.debian.org. SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" @@ -15,4 +15,4 @@ TIMESTAMP=$(curl -s "${ARCHIVE_URL}/99990101T000000Z/pool/" | \ sed -n "s|.*${ARCHIVE_URL}/\([[:digit:]TZ]\+\)/pool/.*|\1|p" | head -n 1) sed -i "s/ARCHIVE_TIMESTAMP=.*$/ARCHIVE_TIMESTAMP=${TIMESTAMP}/" \ - "${SCRIPT_DIR}"/sysroot-creator-*.sh + "${SCRIPT_DIR}"/sysroot-creator.sh diff --git a/build/mac_toolchain.py b/build/mac_toolchain.py index 68c96e2..cd253cd 100755 --- a/build/mac_toolchain.py +++ b/build/mac_toolchain.py @@ -34,12 +34,16 @@ def LoadPList(path): return plistlib.load(f) -# This contains binaries from Xcode 14.0 14B47b along with the macOS 13 SDK -# (13.0 22A372). To build these packages, see comments in +# This contains binaries from Xcode 14.3 14E222b along with the macOS 13.3 SDK +# (13.3 22E245). To build these packages, see comments in # build/xcode_binaries.yaml +# To update the version numbers, open Xcode's "About Xcode" for the first number +# and run `xcrun --show-sdk-build-version` for the second. +# To update the _TAG, use the output of the `cipd create` command mentioned in +# xcode_binaries.yaml. MAC_BINARIES_LABEL = 'infra_internal/ios/xcode/xcode_binaries/mac-amd64' -MAC_BINARIES_TAG = '14b47b' +MAC_BINARIES_TAG = 'ajH0-Cuzzqtyj98qUlsgO1-lepRhXoVVNAjVXDIYHxcC' # The toolchain will not be downloaded if the minimum OS version is not met. 19 # is the major version number for macOS 10.15. Xcode 14.0 14B47b only runs on diff --git a/build/nocompile.gni b/build/nocompile.gni index 093cf66..dafc9f4 100644 --- a/build/nocompile.gni +++ b/build/nocompile.gni @@ -63,8 +63,12 @@ import("//build/config/python.gni") import("//build/toolchain/toolchain.gni") import("//testing/test.gni") +if (is_mac) { + import("//build/config/mac/mac_sdk.gni") +} + declare_args() { - # TODO(crbug.com/105388): make sure no-compile test is not flaky. + # TODO(crbug.com/1442625): Enable for Windows. enable_nocompile_tests = (is_linux || is_chromeos || is_apple) && is_clang && host_cpu == target_cpu } @@ -77,7 +81,7 @@ if (enable_nocompile_tests) { action_foreach(nocompile_target) { testonly = true - script = "//tools/nocompile_driver.py" + script = "//tools/nocompile/driver.py" sources = invoker.sources deps = invoker.deps if (defined(invoker.public_deps)) { @@ -85,19 +89,25 @@ if (enable_nocompile_tests) { } result_path = "$target_gen_dir/{{source_name_part}}_nc.cc" - depfile = "${result_path}.d" outputs = [ result_path ] + rebased_result_path = rebase_path(result_path, root_build_dir) + if (is_win) { + if (host_os == "win") { + cxx = "clang-cl.exe" + nulldevice = "nul" + } else { + cxx = "clang-cl" + nulldevice = "/dev/null" + } + } else { + cxx = "clang++" + } args = [ - rebase_path("$clang_base_path/bin/clang++", root_build_dir), + rebase_path("$clang_base_path/bin/$cxx", root_build_dir), "4", # number of compilers to invoke in parallel. "{{source}}", - rebase_path(result_path, root_build_dir), + rebased_result_path, "--", - "-nostdinc++", - "-isystem" + rebase_path("$libcxx_prefix/include", root_build_dir), - "-isystem" + rebase_path("$libcxxabi_prefix/include", root_build_dir), - "-std=c++17", - "-Wall", "-Werror", "-Wfatal-errors", "-Wthread-safety", @@ -109,9 +119,48 @@ if (enable_nocompile_tests) { # TODO(https://crbug.com/989932): Track build/config/compiler/BUILD.gn "-Wno-implicit-int-float-conversion", ] + if (is_win) { + args += [ + "/W4", + "-Wno-unused-parameter", + "-I" + rebase_path("$libcxx_prefix/include", root_build_dir), + "/std:c++20", + + # TODO(crbug.com/1442625): Uncomment this, then filter and process the + # output appropriately to track dependencies. + # "/showIncludes:user" + + "/Fo" + nulldevice, + "/c", + "/Tp", + ] + } else { + depfile = "${result_path}.d" + args += [ + "-Wall", + "-nostdinc++", + "-isystem" + rebase_path("$libcxx_prefix/include", root_build_dir), + "-isystem" + rebase_path("$libcxxabi_prefix/include", root_build_dir), + "-std=c++20", + "-MMD", + "-MF", + rebased_result_path + ".d", + "-MT", + rebased_result_path, + "-o", + "/dev/null", + "-c", + "-x", + "c++", + ] + } + args += [ "{{source}}" ] - if (is_apple && host_os != "mac") { - args += [ "--target=x86_64-apple-macos" ] + if (is_mac && host_os != "mac") { + args += [ + "--target=x86_64-apple-macos", + "-mmacos-version-min=$mac_deployment_target", + ] } # Iterate over any extra include dirs and append them to the command line. @@ -122,10 +171,15 @@ if (enable_nocompile_tests) { } if (sysroot != "") { - args += [ - "--sysroot", - rebase_path(sysroot, root_build_dir), - ] + sysroot_path = rebase_path(sysroot, root_build_dir) + if (is_win) { + args += [ "/winsysroot" + sysroot_path ] + } else { + args += [ + "--sysroot", + sysroot_path, + ] + } } if (!is_nacl) { @@ -139,6 +193,7 @@ if (enable_nocompile_tests) { test(target_name) { deps = invoker.deps + [ ":$nocompile_target" ] sources = get_target_outputs(":$nocompile_target") + forward_variables_from(invoker, [ "bundle_deps" ]) } } } diff --git a/build/print_python_deps.py b/build/print_python_deps.py index 07f988a..415e7b0 100755 --- a/build/print_python_deps.py +++ b/build/print_python_deps.py @@ -11,7 +11,7 @@ import argparse import os -import pipes +import shlex import sys # Don't use any helper modules, or else they will end up in the results. @@ -68,7 +68,7 @@ def _NormalizeCommandLine(options): if os.name == 'nt': return ' '.join(quote(x) for x in args).replace('\\', '/') else: - return ' '.join(pipes.quote(x) for x in args) + return ' '.join(shlex.quote(x) for x in args) def _FindPythonInDirectory(directory, allow_test): diff --git a/build/private_code_test/BUILD.gn b/build/private_code_test/BUILD.gn index 3fb0a0d..8fcdd54 100644 --- a/build/private_code_test/BUILD.gn +++ b/build/private_code_test/BUILD.gn @@ -32,14 +32,14 @@ if (!is_component_build) { inputs = [ "//../.gclient_entries" ] } - shared_library("private_code_test_lib") { + shared_library("private_code_test_inputs") { deps = [ "//v8" ] ldflags = [ "--collect-inputs-only" ] } # Test that ensures the checker fails when it is supposed to. private_code_test("private_code_failure_test") { - linker_inputs_dep = ":private_code_test_lib" + linker_inputs_dep = ":private_code_test_inputs" private_paths_dep = ":private_code_test_gclient_deps" private_paths_file = "$target_gen_dir/test_private_paths.txt" expect_failure = true diff --git a/build/private_code_test/README.md b/build/private_code_test/README.md index 75329b0..52d1dd7 100644 --- a/build/private_code_test/README.md +++ b/build/private_code_test/README.md @@ -15,8 +15,8 @@ simple. The main alternative I found was to use `gclient flatten`. Example output: ``` - # src -> src-internal - "src-internal": { + # src -> src/internal + "src/internal": { "url": "https://chrome-internal.googlesource.com/chrome/src-internal.git@c649c6a155fe65c3730e2d663d7d2058d33bf1f9", "condition": 'checkout_src_internal', }, diff --git a/build/private_code_test/list_gclient_deps.py b/build/private_code_test/list_gclient_deps.py index dea0d6d..6a34fc4 100755 --- a/build/private_code_test/list_gclient_deps.py +++ b/build/private_code_test/list_gclient_deps.py @@ -12,12 +12,6 @@ _ENTRIES_FILE = _REPO_ROOT / '.gclient_entries' -def _parse_gclient_entries(): - result = {} - exec(_ENTRIES_FILE.read_text(), result) - return result['entries'] - - def main(): parser = argparse.ArgumentParser() parser.add_argument('--source-filter', required=True) @@ -25,8 +19,23 @@ def main(): args = parser.parse_args() source_filter = args.source_filter - entries = _parse_gclient_entries() - private_dirs = sorted(d for d, s in entries.items() if source_filter in s) + + # Ninja validates that the file exists since it's marked as an input. + try: + text = _ENTRIES_FILE.read_text() + result = {} + exec(text, result) + entries = result['entries'] + private_dirs = sorted(d for d, s in entries.items() + if s and source_filter in s) + except Exception as e: + # Make the test fail rather than the compile step so that failures here do + # not prevent other bot functionality. + private_dirs = [ + '# ERROR parsing .gclient_entries', + str(e), '', 'File was:', text + ] + pathlib.Path(args.output).write_text('\n'.join(private_dirs) + '\n') diff --git a/build/private_code_test/private_code_test.gni b/build/private_code_test/private_code_test.gni index e52b150..6ce82f0 100644 --- a/build/private_code_test/private_code_test.gni +++ b/build/private_code_test/private_code_test.gni @@ -13,14 +13,17 @@ template("private_code_test") { ]) script = "//build/private_code_test/private_code_test.py" _linker_inputs_dep = invoker.linker_inputs_dep + if (shlib_prefix != "") { + _so_name = shlib_prefix + get_label_info(_linker_inputs_dep, "name") + _so_name = string_replace(_so_name, + "${shlib_prefix}${shlib_prefix}", + shlib_prefix) + } + _dir = get_label_info(_linker_inputs_dep, "root_out_dir") if (is_android) { - _so_name = "lib" + get_label_info(_linker_inputs_dep, "name") - _so_name = string_replace(_so_name, "liblib", "lib") - _linker_inputs_file = get_label_info(_linker_inputs_dep, "root_out_dir") + - "/lib.unstripped/${_so_name}$shlib_extension" - } else { - assert(false, "TODO: Add non-android support") + _dir += "/lib.unstripped" } + _linker_inputs_file = "$_dir/${_so_name}$shlib_extension" if (defined(invoker.private_paths_dep)) { _private_paths_dep = invoker.private_paths_dep _private_paths_file = invoker.private_paths_file diff --git a/build/private_code_test/private_code_test.py b/build/private_code_test/private_code_test.py index 5d8f0b4..a164741 100755 --- a/build/private_code_test/private_code_test.py +++ b/build/private_code_test/private_code_test.py @@ -63,6 +63,28 @@ def _find_private_paths(linker_inputs, private_paths, root_out_dir): return found +def _read_private_paths(path): + text = pathlib.Path(path).read_text() + + # Check if .gclient_entries was not valid. https://crbug.com/1427829 + if text.startswith('# ERROR: '): + sys.stderr.write(text) + sys.exit(1) + + # Remove src/ prefix from paths. + # We care only about paths within src/ since GN cannot reference files + # outside of // (and what would the obj/ path for them look like?). + ret = [p[4:] for p in text.splitlines() if p.startswith('src/')] + if not ret: + sys.stderr.write(f'No src/ paths found in {args.private_paths_file}\n') + sys.stderr.write(f'This test should not be run on public bots.\n') + sys.stderr.write(f'File contents:\n') + sys.stderr.write(text) + sys.exit(1) + + return ret + + def main(): parser = argparse.ArgumentParser() parser.add_argument('--linker-inputs', @@ -84,16 +106,9 @@ def main(): help='Invert exit code.') args = parser.parse_args() - private_paths = pathlib.Path(args.private_paths_file).read_text().splitlines() + private_paths = _read_private_paths(args.private_paths_file) linker_inputs = pathlib.Path(args.linker_inputs).read_text().splitlines() - # Remove src/ prefix from paths. - # We care only about paths within src/ since GN cannot reference files - # outside of // (and what would the obj/ path for them look like?). - private_paths = [p[4:] for p in private_paths if p.startswith('src/')] - if not private_paths: - raise ('No paths src/ paths found in ' + args.private_paths_file) - root_out_dir = args.root_out_dir if root_out_dir == '.': root_out_dir = '' diff --git a/build/protoc_java.py b/build/protoc_java.py index 28c4200..8f25e3a 100755 --- a/build/protoc_java.py +++ b/build/protoc_java.py @@ -22,6 +22,9 @@ import subprocess import sys +import action_helpers +import zip_helpers + sys.path.append(os.path.join(os.path.dirname(__file__), 'android', 'gyp')) from util import build_utils @@ -41,7 +44,7 @@ def _EnforceJavaPackage(proto_srcs): def main(argv): parser = argparse.ArgumentParser() - build_utils.AddDepfileOption(parser) + action_helpers.add_depfile_arg(parser) parser.add_argument('--protoc', required=True, help='Path to protoc binary.') parser.add_argument('--plugin', help='Path to plugin executable') parser.add_argument('--proto-path', @@ -91,12 +94,13 @@ def main(argv): build_utils.DeleteDirectory(options.java_out_dir) shutil.copytree(temp_dir, options.java_out_dir) else: - build_utils.ZipDir(options.srcjar, temp_dir) + with action_helpers.atomic_output(options.srcjar) as f: + zip_helpers.zip_directory(f, temp_dir) if options.depfile: assert options.srcjar deps = options.protos + [options.protoc] - build_utils.WriteDepfile(options.depfile, options.srcjar, deps) + action_helpers.write_depfile(options.depfile, options.srcjar, deps) if options.stamp: build_utils.Touch(options.stamp) diff --git a/build/protoc_java.pydeps b/build/protoc_java.pydeps index c3ed2be..467907f 100644 --- a/build/protoc_java.pydeps +++ b/build/protoc_java.pydeps @@ -1,6 +1,8 @@ # Generated by running: # build/print_python_deps.py --root build --output build/protoc_java.pydeps build/protoc_java.py +action_helpers.py android/gyp/util/__init__.py android/gyp/util/build_utils.py gn_helpers.py protoc_java.py +zip_helpers.py diff --git a/build/rust/BUILD.gn b/build/rust/BUILD.gn index b6ad5f1..609dab8 100644 --- a/build/rust/BUILD.gn +++ b/build/rust/BUILD.gn @@ -5,11 +5,6 @@ import("//build/buildflag_header.gni") import("//build/config/rust.gni") -buildflag_header("rust_buildflags") { - header = "rust_buildflags.h" - flags = [ "TOOLCHAIN_HAS_RUST=$toolchain_has_rust" ] -} - if (toolchain_has_rust) { config("edition_2021") { rustflags = [ "--edition=2021" ] @@ -33,23 +28,21 @@ if (toolchain_has_rust) { defines = [ "RUST_CXX_NO_EXCEPTIONS" ] - if (is_win) { - defines += [ "CXX_RS_EXPORT=__declspec(dllexport)" ] + # We cannot depend on base/base_export.h because base depends on us. + if (is_component_build) { + if (is_win) { + defines += [ "CXX_RS_EXPORT=__declspec(dllexport)" ] + } else { + defines += [ "CXX_RS_EXPORT=__attribute__((visibility(\"default\")))" ] + } } else { - defines += [ "CXX_RS_EXPORT=__attribute__((visibility(\"default\")))" ] + defines += [ "CXX_RS_EXPORT=" ] } # Depending on the C++ bindings side of cxx then requires also depending # on the Rust bindings, since one calls the other. And the Rust bindings # require the Rust standard library. - # Normally the Rust stdlib is brought in as a dependency by depending - # on any first-party Rust target. But in this case, it's conceivable - # that pure-C++ targets will not depend on any 1p Rust code so we'll add - # the Rust stdlib explicitly. - deps = [ - ":cxx_rustdeps", - "//build/rust/std", - ] + deps = [ ":cxx_rustdeps" ] } # The required dependencies for cxx-generated bindings, that must be included @@ -77,3 +70,18 @@ config("proc_macro_extern") { "proc_macro", ] } + +# Forbids unsafe code in crates with this config. +config("forbid_unsafe") { + rustflags = [ "-Funsafe_code" ] +} + +config("panic_immediate_abort") { + visibility = [ "//build/rust/std/rules:*" ] + if (is_official_build) { + rustflags = [ + "--cfg", + "feature=\"panic_immediate_abort\"", + ] + } +} diff --git a/build/rust/OWNERS b/build/rust/OWNERS index 4ba728c..0e7aca6 100644 --- a/build/rust/OWNERS +++ b/build/rust/OWNERS @@ -2,7 +2,6 @@ adetaylor@chromium.org ajgo@chromium.org collinbaker@chromium.org danakj@chromium.org -jclinton@chromium.org lukasza@chromium.org rsesek@chromium.org thakis@chromium.org diff --git a/build/rust/analyze.gni b/build/rust/analyze.gni deleted file mode 100644 index 30784ca..0000000 --- a/build/rust/analyze.gni +++ /dev/null @@ -1,78 +0,0 @@ -# Copyright 2023 The Chromium Authors -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//build/config/compute_inputs_for_analyze.gni") - -if (compute_inputs_for_analyze) { - template("analyze_rust") { - _target_name = target_name - assert(defined(invoker.crate_root)) - - action("${_target_name}_collect_sources") { - forward_variables_from(invoker, - "*", - TESTONLY_AND_VISIBILITY + [ - "inputs", - "script", - "sources", - "depfile", - "outputs", - "args", - ]) - forward_variables_from(invoker, [ "testonly" ]) - - script = "//build/rust/collect_rust_sources.py" - depfile = "${target_gen_dir}/${target_name}.verify.d" - outputs = [ depfile ] - - args = [ - "--generate-depfile", - "third_party/rust-toolchain/bin/rustc", - rebase_path(crate_root, root_build_dir), - rebase_path(depfile, root_build_dir), - "{{rustflags}}", - ] - } - - action(_target_name) { - forward_variables_from(invoker, [ "testonly" ]) - - # Constructs a depfile of all rust sources in the crate. - deps = [ ":${_target_name}_collect_sources" ] - - # This target is reached once during `gn gen` and then again during - # `gn analyze`. - # - # 1. When doing `gn gen`, the ':${_target_name}_collect_sources' - # target generates a depfile containing all the rust sources of - # the crate. The exec_script() below runs first, and it produces an - # empty result. - # 2. When doing `gn analyze`, the exec_script() reads the depfile that - # was written during `gn gen` and puts each Rust file in the crate - # into `inputs`. - depfile_path = [] - foreach(d, get_target_outputs(":${_target_name}_collect_sources")) { - depfile_path += [ rebase_path(d, root_build_dir) ] - } - - # Here we read the depfile from `gn gen` when doing `gn analyze`, and - # add all the rust files in the crate to `inputs`. This ensures that - # analyze considers them as affecting tests that depend on the crate. - rust_srcs = exec_script("//build/rust/collect_rust_sources.py", - [ "--read-depfile" ] + depfile_path, - "list lines") - inputs = [] - foreach(s, rust_srcs) { - inputs += [ rebase_path(s, "//", root_build_dir) ] - } - script = "//build/rust/collect_rust_sources.py" - args = [ - "--stamp", - rebase_path("${target_gen_dir}/${target_name}.verify.stamp", - root_build_dir), - ] - outputs = [ "${target_gen_dir}/${target_name}.verify.stamp" ] - } - } -} diff --git a/build/rust/cargo_crate.gni b/build/rust/cargo_crate.gni index ef30626..427fcf6 100644 --- a/build/rust/cargo_crate.gni +++ b/build/rust/cargo_crate.gni @@ -2,8 +2,9 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import("//build/config/rust.gni") -import("//build/rust/rust_target.gni") +import("//build/rust/rust_executable.gni") +import("//build/rust/rust_macro.gni") +import("//build/rust/rust_static_library.gni") # This template allows for building Cargo crates within gn. # @@ -22,7 +23,6 @@ import("//build/rust/rust_target.gni") # Arguments: # sources # crate_root -# epoch # deps # aliased_deps # features @@ -33,6 +33,20 @@ import("//build/rust/rust_target.gni") # library_configs/executable_configs # All just as in rust_target.gni # +# epoch (optional) +# The major version of the library, which is used to differentiate between +# multiple versions of the same library name. This includes all leading 0s +# and the first non-zero value in the crate's version. This should be left +# as the default, which is "0", for first-party code unless there are +# multiple versions of a crate present. For third-party code, the version +# epoch (matching the directory it is found in) should be specified. +# +# Examples: +# 1.0.2 => epoch = "1" +# 4.2.0 => epoch = "4" +# 0.2.7 => epoch = "0.2" +# 0.0.3 => epoch = "0.0.3" +# # dev_deps # Same meaning as test_deps in rust_static_library.gni, but called # dev_deps to match Cargo.toml better. @@ -76,13 +90,22 @@ import("//build/rust/rust_target.gni") # command line tool help) template("cargo_crate") { - orig_target_name = target_name + _orig_target_name = target_name - _crate_name = orig_target_name + _crate_name = _orig_target_name if (defined(invoker.crate_name)) { _crate_name = invoker.crate_name } + # Construct metadata from the crate epoch or an explicitly provided metadata + # field. + _rustc_metadata = "" + if (defined(invoker.rustc_metadata)) { + _rustc_metadata = invoker.rustc_metadata + } else if (defined(invoker.epoch)) { + _rustc_metadata = "${_crate_name}-${invoker.epoch}" + } + # Executables need to have unique names. Work out a prefix. if (defined(invoker.build_root)) { _epochlabel = "vunknown" @@ -90,8 +113,17 @@ template("cargo_crate") { _tempepoch = string_replace(invoker.epoch, ".", "_") _epochlabel = "v${_tempepoch}" } - build_script_name = + + # This name includes the target name to ensure it's unique for each possible + # build target in the same BUILD.gn file. + _build_script_name = "${_crate_name}_${target_name}_${_epochlabel}_build_script" + + # Where the OUT_DIR will point when running the build script exe, and + # compiling the crate library/binaries. This directory must include the + # target name to avoid collisions between multiple GN targets that exist + # in the same BUILD.gn. + _build_script_env_out_dir = "$target_gen_dir/$target_name" } _rustenv = [] @@ -99,36 +131,72 @@ template("cargo_crate") { _rustenv = invoker.rustenv } if (defined(invoker.cargo_pkg_authors)) { - _rustenv += [ string_join("=", - [ - "CARGO_PKG_AUTHORS", - invoker.cargo_pkg_authors, - ]) ] + _rustenv += [ "CARGO_PKG_AUTHORS=${invoker.cargo_pkg_authors}" ] } if (defined(invoker.cargo_pkg_version)) { - _rustenv += [ string_join("=", - [ - "CARGO_PKG_VERSION", - invoker.cargo_pkg_version, - ]) ] + _rustenv += [ "CARGO_PKG_VERSION=${invoker.cargo_pkg_version}" ] } if (defined(invoker.cargo_pkg_name)) { - _rustenv += [ string_join("=", - [ - "CARGO_PKG_NAME", - invoker.cargo_pkg_name, - ]) ] + _rustenv += [ "CARGO_PKG_NAME=${invoker.cargo_pkg_name}" ] } if (defined(invoker.cargo_pkg_description)) { - _rustenv += [ string_join("=", - [ - "CARGO_PKG_DESCRIPTION", - invoker.cargo_pkg_description, - ]) ] + _rustenv += [ "CARGO_PKG_DESCRIPTION=${invoker.cargo_pkg_description}" ] + } + + # Try to determine the CARGO_MANIFEST_DIR, preferring the directory + # with build.rs and otherwise assuming that the target contains a + # `crate/` subdirectory. + if (defined(invoker.build_root)) { + manifest_dir = rebase_path(get_path_info(invoker.build_root, "dir"), "") + } else { + build_gn_dir = get_label_info(target_name, "dir") + manifest_dir = rebase_path(build_gn_dir + "/crate", "") + } + _rustenv += [ "CARGO_MANIFEST_DIR=${manifest_dir}" ] + + # cargo_crate() should set library_configs, executable_configs, + # proc_macro_configs. Not configs. + assert(!defined(invoker.configs)) + + # Work out what we're building. + _crate_type = "rlib" + if (defined(invoker.crate_type)) { + _crate_type = invoker.crate_type + } + if (_crate_type == "cdylib") { + # Crates are rarely cdylibs. The example encountered so far aims + # to expose a C API to other code. In a Chromium context, we don't + # want to build that as a dylib for a couple of reasons: + # * rust_shared_library does not work on Mac. rustc does not know + # how to export the __llvm_profile_raw_version symbol. + # * even if it did work, this might require us to distribute extra + # binaries (.so/.dylib etc.) + # For the only case we've had so far, it makes more sense to build + # the code as a static library which we can then link into downstream + # binaries. + _crate_type = "rlib" + } + if (_crate_type == "bin") { + _target_type = "rust_executable" + assert(!defined(invoker.epoch)) + if (defined(invoker.executable_configs)) { + _configs = invoker.executable_configs + } + } else if (_crate_type == "proc-macro") { + _target_type = "rust_macro" + if (defined(invoker.proc_macro_configs)) { + _configs = invoker.proc_macro_configs + } + } else { + assert(_crate_type == "rlib") + _target_type = "rust_static_library" + if (defined(invoker.library_configs)) { + _configs = invoker.library_configs + } } # The main target, either a Rust source set or an executable. - rust_target(target_name) { + target(_target_type, target_name) { forward_variables_from(invoker, "*", TESTONLY_AND_VISIBILITY + [ @@ -137,43 +205,52 @@ template("cargo_crate") { "build_sources", "build_script_inputs", "build_script_outputs", - "output_dir", + "epoch", "unit_test_target", - "target_type", "configs", + "executable_configs", + "library_configs", + "proc_macro_configs", "rustenv", + "dev_deps", ]) forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + if (defined(crate_type) && crate_type == "cdylib") { + # See comments above about cdylib. + crate_type = "rlib" + } + + rustc_metadata = _rustc_metadata + + # TODO(crbug.com/1422745): don't default to true. This requires changes to + # third_party.toml and gnrt when generating third-party build targets. + allow_unsafe = true - # Work out what we're building. - crate_type = "rlib" - if (defined(invoker.crate_type)) { - crate_type = invoker.crate_type + configs = [] + if (defined(_configs)) { + configs += _configs } + + if (_crate_type == "rlib") { + # Forward configs for unit tests. + if (defined(invoker.executable_configs)) { + executable_configs = invoker.executable_configs + } + } + if (!defined(rustflags)) { rustflags = [] } rustenv = _rustenv - if (crate_type == "bin") { - target_type = "executable" - assert(!defined(invoker.epoch)) - } else if (crate_type == "proc-macro") { - target_type = "rust_proc_macro" - } else { - assert(crate_type == "rlib") - target_type = "rust_library" - } if (!defined(build_native_rust_unit_tests)) { - build_native_rust_unit_tests = true + build_native_rust_unit_tests = _crate_type != "proc-macro" + } + if (build_native_rust_unit_tests) { + # Unit tests in a proc-macro crate type don't make sense, you can't + # compile executables against the `proc_macro` crate. + assert(_crate_type != "proc-macro") } - - # We may generate multiple build rules for the same Cargo crate, as they may - # have multiple build configurations: for use from deps, build-deps or - # dev-deps. But that would try to build multiple crates with the same name, - # colliding on the libcratename.rlib outputs. So we specify an output_dir - # for Cargo crates which includes the GN target name to disambiguate them. - output_dir = "${target_out_dir}/${orig_target_name}" # The unit tests for each target, if generated, should be unique as well. # a) It needs to be unique even if multiple build targets have the same @@ -181,16 +258,30 @@ template("cargo_crate") { # b) It needs to be unique even if multiple build targets have the same # `crate_name` and target name, but different epochs. _unit_test_unique_target_name = "" - if (_crate_name != orig_target_name) { - _unit_test_unique_target_name = "${orig_target_name}_" + if (_crate_name != _orig_target_name) { + _unit_test_unique_target_name = "${_orig_target_name}_" } _unit_test_unique_epoch = "" if (defined(invoker.epoch)) { _epoch_str = string_replace(invoker.epoch, ".", "_") _unit_test_unique_epoch = "v${_epoch_str}_" } + if (defined(output_dir) && output_dir != "") { + unit_test_output_dir = output_dir + } unit_test_target = "${_unit_test_unique_target_name}${_crate_name}_${_unit_test_unique_epoch}unittests" + if ((!defined(output_dir) || output_dir == "") && _crate_type == "rlib") { + # Cargo crate rlibs can be compiled differently for tests, and must not + # collide with the production outputs. This does *not* override the + # unit_test_output_dir, which is set above, as that target is not an rlib. + output_dir = "$target_out_dir/$_orig_target_name" + } + + if (defined(invoker.dev_deps)) { + test_deps = invoker.dev_deps + } + if (defined(invoker.build_root)) { # Uh-oh, we have a build script if (!defined(deps)) { @@ -199,15 +290,6 @@ template("cargo_crate") { if (!defined(sources)) { sources = [] } - if (defined(invoker.dev_deps)) { - test_deps = invoker.dev_deps - } - - # Re-compute the directory the build script used as its `--out-dir`. This - # logic needs to match that in `action("${build_script_name}_output")`. - _build_script_target_out_dir = - get_label_info(":${build_script_name}_output", "target_out_dir") - _build_script_out_dir = "$_build_script_target_out_dir/$orig_target_name" # This... is a bit weird. We generate a file called cargo_flags.rs which # does not actually contain Rust code, but instead some flags to add @@ -215,7 +297,7 @@ template("cargo_crate") { # we can include it in the 'sources' line and thus have dependency # calculation done correctly. data_deps won't work because targets don't # require them to be present until runtime. - flags_file = "$_build_script_out_dir/cargo_flags.rs" + flags_file = "$_build_script_env_out_dir/cargo_flags.rs" rustflags += [ "@" + rebase_path(flags_file, root_build_dir) ] sources += [ flags_file ] if (defined(invoker.build_script_outputs)) { @@ -225,49 +307,52 @@ template("cargo_crate") { # about the dependency either way. foreach(extra_source, filter_include(invoker.build_script_outputs, [ "*.rs" ])) { - sources += [ "$_build_script_out_dir/$extra_source" ] + sources += [ "$_build_script_env_out_dir/$extra_source" ] } inputs = [] foreach(extra_source, filter_exclude(invoker.build_script_outputs, [ "*.rs" ])) { - inputs += [ "$_build_script_out_dir/$extra_source" ] + inputs += [ "$_build_script_env_out_dir/$extra_source" ] } } - deps += [ ":${build_script_name}_output" ] - } else { - not_needed([ "orig_target_name" ]) + deps += [ ":${_build_script_name}_output" ] } } if (defined(invoker.build_root)) { # Extra targets required to make build script work - action("${build_script_name}_output") { + action("${_build_script_name}_output") { script = rebase_path("//build/rust/run_build_script.py") - build_script_target = - ":${build_script_name}($host_toolchain_no_sanitizers)" + build_script_target = ":${_build_script_name}($rust_macro_toolchain)" deps = [ build_script_target ] - _build_script_exe_dir = + # The build script may be built with a different toolchain when + # cross-compiling (the host toolchain) so we must find the path relative + # to that. + _build_script_root_out_dir = get_label_info(build_script_target, "root_out_dir") - build_script = "$_build_script_exe_dir/${build_script_name}" - if (is_win) { - build_script = "${build_script}.exe" + _build_script_exe = "$_build_script_root_out_dir/$_build_script_name" + + # The executable is always built with the `rust_macro_toolchain` which + # targets the `host_os`. The rule here is on the `target_toolchain` which + # can be different (e.g. compiling on Linux, targeting Windows). + if (host_os == "win") { + _build_script_exe = "${_build_script_exe}.exe" } - _build_script_out_dir = "$target_out_dir/$orig_target_name" - flags_file = "$_build_script_out_dir/cargo_flags.rs" + _flags_file = "$_build_script_env_out_dir/cargo_flags.rs" - inputs = [ build_script ] - outputs = [ flags_file ] + inputs = [ _build_script_exe ] + outputs = [ _flags_file ] args = [ "--build-script", - rebase_path(build_script, root_build_dir), + rebase_path(_build_script_exe, root_build_dir), "--output", - rebase_path(flags_file, root_build_dir), + rebase_path(_flags_file, root_build_dir), "--rust-prefix", - rebase_path("${rust_sysroot}/bin"), + rebase_path("${rust_sysroot}/bin", root_build_dir), "--out-dir", - rebase_path(_build_script_out_dir, root_build_dir), + rebase_path(_build_script_env_out_dir, root_build_dir), "--src-dir", rebase_path(get_path_info(invoker.build_root, "dir"), root_build_dir), ] @@ -285,7 +370,7 @@ template("cargo_crate") { args += [ "--generated-files" ] args += invoker.build_script_outputs foreach(generated_file, invoker.build_script_outputs) { - outputs += [ "$_build_script_out_dir/$generated_file" ] + outputs += [ "$_build_script_env_out_dir/$generated_file" ] } } if (_rustenv != []) { @@ -297,14 +382,25 @@ template("cargo_crate") { } } - if (current_toolchain == host_toolchain_no_sanitizers) { - rust_target(build_script_name) { - target_type = "executable" + if (toolchain_for_rust_host_build_tools) { + # The build script is only available to be built on the host, and we use + # the rust_macro_toolchain for it to unblock building them while the + # Chromium stdlib is still being compiled. + rust_executable(_build_script_name) { sources = invoker.build_sources crate_root = invoker.build_root if (defined(invoker.build_deps)) { deps = invoker.build_deps } + + # The ${_build_script_name}_output target looks for the exe in this + # location. Due to how the Windows component build works, this has to + # be $root_out_dir for all EXEs. In component build, C++ links to the + # CRT as a DLL, and if Rust does not match, we can't link mixed target + # Rust EXE/DLLs, as the headers in C++ said something different than + # what Rust links. Since the CRT DLL is placed in the $root_out_dir, + # an EXE can find it if it's also placed in that dir. + output_dir = root_out_dir rustenv = _rustenv forward_variables_from(invoker, [ @@ -312,8 +408,22 @@ template("cargo_crate") { "edition", "rustflags", ]) - executable_configs -= [ "//build/config/compiler:chromium_code" ] - executable_configs += [ "//build/config/compiler:no_chromium_code" ] + configs -= [ + "//build/config/compiler:chromium_code", + + # Avoid generating profiling data for build scripts. + # + # TODO(crbug.com/1426472): determine for sure whether to remove this + # config. I'm not sure of the overlap between PGO instrumentation and + # code coverage instrumentation, but we definitely don't want build + # script coverage for PGO, while we might for test coverage metrics. + # + # If we do include build script output in test metrics, it could be + # misleading: exercising some code from a build script doesn't give us + # the same signal as an actual test. + "//build/config/coverage:default_coverage", + ] + configs += [ "//build/config/compiler:no_chromium_code" ] } } else { not_needed(invoker, @@ -325,10 +435,16 @@ template("cargo_crate") { "build_script_outputs", ]) } + } else { + not_needed([ + "_name_specific_output_dir", + "_orig_target_name", + ]) } } set_defaults("cargo_crate") { library_configs = default_compiler_configs executable_configs = default_executable_configs + proc_macro_configs = default_rust_proc_macro_configs } diff --git a/build/rust/clanglibs/BUILD.gn b/build/rust/clanglibs/BUILD.gn deleted file mode 100644 index a80b29c..0000000 --- a/build/rust/clanglibs/BUILD.gn +++ /dev/null @@ -1,80 +0,0 @@ -# Copyright 2022 The Chromium Authors -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -# Several Rust codegen tools (bindgen, autocxx_gen) link against -# libclang. We prefer to distribute the static libraries that make up -# the conceptual "libclang", but there are quite a few such libraries. -# This script enumerates them. - -import("//build/rust/rust_static_library.gni") - -_clang_libs_dir = "//third_party/llvm-build/Release+Asserts/lib" - -if (toolchain_has_rust) { - # This requires you to configure your .gclient file with - # "custom_vars": { - # "checkout_clang_libs": True, - # } - rust_static_library("clanglibs") { - # Clang libs are used to build developer tools that run on a developer - # machine. - assert(!is_android) - - crate_root = get_label_info(":find_clanglibs", "target_gen_dir") + "/lib.rs" - sources = [ crate_root ] - deps = [ ":find_clanglibs" ] - - # all_dependent_configs not public_configs because these directives - # need to propagate to the eventual final linking step. Our immediate - # dependent is probably libclang_sys.rlib, which will only later be - # linked into an executable. - all_dependent_configs = [ ":clanglibs_static_config" ] - } - - action("find_clanglibs") { - # We need to tell rustc to link such binaries against a large - # and frequently-varying list of static libraries. - # gn/ninja, however, require statically determined dependency - # rules. - # Our options are: - # a) hard-code them in a .gn file like this, changing them frequently; - # b) use exec_script to enumerate them. This will slow down everyone's - # 'gn' invocations - # c) use libclang.so instead - # d) put these files entirely outside the visibility of gn/ninja - # We choose option (d). We generate a crate which tells rustc to link - # against these things. - script = "find_clanglibs.py" - _generated_crate_root = "$target_gen_dir/lib.rs" - depfile = "$target_out_dir/find_clanglibs.d" - args = [ - "--clang-libs-dir", - rebase_path(_clang_libs_dir), - "--output", - rebase_path(_generated_crate_root, root_build_dir), - "--depfile", - rebase_path(depfile, root_build_dir), - ] - - # Always rerun this script when clang rolls, in case the - # set of libraries has changed. The following script contains - # a clang revision label, so is guaranteed to change each time - # clang rolls. - inputs = [ rebase_path("//tools/clang/scripts/update.py") ] - outputs = [ _generated_crate_root ] - visibility = [ ":*" ] - } - - config("clanglibs_static_config") { - # Inform dependent rustc invocations where these various libraries - # are to be found. - rustflags = [ "-L" + rebase_path(_clang_libs_dir) ] - - # At present, all known Rust codegen tools are based ultimately - # on bindgen and libclang-sys, so set the environment variable - # required to inform those build processes where the libraries - # are. - rustenv = [ "LIBCLANG_STATIC_PATH=" + rebase_path(_clang_libs_dir) ] - } -} diff --git a/build/rust/clanglibs/find_clanglibs.py b/build/rust/clanglibs/find_clanglibs.py deleted file mode 100755 index 8fd667a..0000000 --- a/build/rust/clanglibs/find_clanglibs.py +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env/python3 - -# Copyright 2022 The Chromium Authors -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -# Enumerate all clang libraries and generate a .rs file which is built into a -# library that links all the clanglibs into it. Depending on that library -# ensures linking against our clang libraries. -# See BUILD.gn in this directory for more context. - -import argparse -import os -import stat -import sys -import shutil -import subprocess -import re - -LIB_BASENAME_RE = re.compile(r"lib(.*)\.(?:lib|a)$", re.I) - - -def main(): - parser = argparse.ArgumentParser("find_clanglibs.py") - parser.add_argument("--output", help="Path to rsp file", required=True) - parser.add_argument("--depfile", help="Path to write depfile", required=True) - parser.add_argument("--clang-libs-dir", - help="Where to find clang and LLVM libs", - required=True) - args = parser.parse_args() - if not os.path.exists(os.path.join( - args.clang_libs_dir, "libclang.a")) and not os.path.exists( - os.path.join(args.clang_libs_dir, "libclang.lib")): - print("Couldn't find libclang.a|lib. Please ensure you set a custom var in " - "your .gclient file like so:\n" - " \"custom_vars\": { \"checkout_clang_libs\": True, }\n" - "Then run gclient sync; rm " - "/obj/build/rust/clanglibs/clang_libs.rsp.") - return -1 - with open(args.depfile, 'w') as depfile: - depfile.write("%s:" % args.output) - with open(args.output, 'w') as output: - output.write("//! Generated by build/rust/clanglibs/find_clanglibs.py\n") - output.write("//! @generated\n") - for f in os.listdir(args.clang_libs_dir): - m = LIB_BASENAME_RE.match(f) - if m: - basename = m.group(1) - output.write("#[link(name=\"{}\")]\n".format(basename)) - full_path = os.path.join(args.clang_libs_dir, f) - depfile.write(" {} \\\n".format(full_path)) - output.write("#[link(name=\"stdc++\")]\n") - output.write("#[link(name=\"z\")]\n") - output.write("extern {}\n") - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/build/rust/collect_rust_sources.py b/build/rust/collect_rust_sources.py deleted file mode 100755 index 48f2f1f..0000000 --- a/build/rust/collect_rust_sources.py +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env python3 -# Copyright 2023 The Chromium Authors -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. -'''Is used to find all rust files in a crate, and write the result to a -depfile. Then, used again to read the same depfile and pull out just the -source files. Lastly, it is also used to write a stamp file at the same -location as the depfile.''' - -import argparse -import re -import subprocess -import sys - -FILE_REGEX = re.compile('^(.*):') - - -def main(): - parser = argparse.ArgumentParser( - description='Collect Rust sources for a crate') - parser.add_argument('--stamp', - action='store_true', - help='Generate a stamp file') - parser.add_argument('--generate-depfile', - action='store_true', - help='Generate a depfile') - parser.add_argument('--read-depfile', - action='store_true', - help='Read the previously generated depfile') - args, rest = parser.parse_known_args() - - if (args.stamp): - stampfile = rest[0] - with open(stampfile, "w") as f: - f.write("stamp") - elif (args.generate_depfile): - rustc = rest[0] - crate_root = rest[1] - depfile = rest[2] - rustflags = rest[3:] - - rustc_args = [ - "--emit=dep-info=" + depfile, "-Zdep-info-omit-d-target", crate_root - ] - subprocess.check_call([rustc] + rustc_args + rustflags) - elif (args.read_depfile): - depfile = rest[0] - try: - with open(depfile, "r") as f: - files = [FILE_REGEX.match(l) for l in f.readlines()] - for f in files: - if f: - print(f.group(1)) - except: - pass - else: - print("ERROR: Unknown action") - parser.print_help() - return 1 - return 0 - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/build/rust/rs_bindings_from_cc.gni b/build/rust/rs_bindings_from_cc.gni index 9bd08cf..463bd61 100644 --- a/build/rust/rs_bindings_from_cc.gni +++ b/build/rust/rs_bindings_from_cc.gni @@ -32,7 +32,7 @@ import("//build/rust/mixed_static_library.gni") # the *public* API that bindings are needed for. # # TODO(crbug.com/1329611): Internal headers should still to be included in -# the targets_and_headers metadata... +# the targets_and_args metadata... # # deps: # Other `rs_bindings_from_cc` targets that the bindings need to depend on @@ -157,7 +157,7 @@ template("rs_bindings_from_cc") { _rs_out_path = "${target_gen_dir}/${_lib_target_name}.rs" _cc_out_path = "${target_gen_dir}/${_lib_target_name}_impl.cc" - # Calculating the --targets_and_headers snippet for the *current* target + # Calculating the --targets_and_args snippet for the *current* target # and putting it into GN's `metadata`. group(_metadata_target_name) { testonly = _testonly @@ -169,8 +169,8 @@ template("rs_bindings_from_cc") { metadata = { # The data below corresponds to a single-target entry inside - # `--targets_and_headers` cmdline argument of `rs_bindings_from_cc`. - crubit_target_and_headers = [ + # `--targets_and_args` cmdline argument of `rs_bindings_from_cc`. + crubit_target_and_args = [ { # The `get_label_info` call below expands ":foo_rs_api" into # something like "//dir/bar/baz:foo_rs_api". Crubit assumes that @@ -183,7 +183,7 @@ template("rs_bindings_from_cc") { } } - # Gathering --targets-and-headers data from *all* transitive dependencies and + # Gathering --targets-and-args data from *all* transitive dependencies and # putting them into the file at `_metadata_path`. generated_file(_gen_metadata_target_name) { testonly = _testonly @@ -195,7 +195,7 @@ template("rs_bindings_from_cc") { testonly = _testonly outputs = [ _metadata_path ] output_conversion = "json" - data_keys = [ "crubit_target_and_headers" ] + data_keys = [ "crubit_target_and_args" ] # `walk_keys` are used to limit how deep the transitive dependency goes. # This is important, because Crubit doesn't care about all the `deps` or @@ -266,7 +266,7 @@ template("rs_bindings_from_cc") { # Target-specific inputs: "--public_headers", string_join(",", _rebased_public_headers), - "--targets_and_headers_from_gn", + "--targets_and_args_from_gn", rebase_path(_metadata_path), ] diff --git a/build/rust/run_bindgen.py b/build/rust/run_bindgen.py index da84f4b..c9d192f 100755 --- a/build/rust/run_bindgen.py +++ b/build/rust/run_bindgen.py @@ -9,18 +9,18 @@ import subprocess import sys -# Set up path to be able to import build_utils. +# Set up path to be able to import action_helpers. sys.path.append( os.path.join(os.path.dirname(os.path.abspath(__file__)), os.pardir, - os.pardir, 'build', 'android', 'gyp')) -from util import build_utils + os.pardir, 'build')) +import action_helpers from filter_clang_args import filter_clang_args def atomic_copy(in_path, out_path): with open(in_path, 'rb') as input: - with build_utils.AtomicOutput(out_path, only_if_changed=True) as output: + with action_helpers.atomic_output(out_path) as output: content = input.read() output.write(content) @@ -39,8 +39,15 @@ def main(): parser.add_argument("--depfile", help="depfile to output with header dependencies") parser.add_argument("--output", help="output .rs bindings", required=True) - parser.add_argument("--ld-library-path", help="LD_LIBRARY_PATH to set") + parser.add_argument("--ld-library-path", + help="LD_LIBRARY_PATH (or DYLD_LIBRARY_PATH on Mac) to " + "set") + parser.add_argument("--libclang-path", + help="Path to the libclang shared libray.") parser.add_argument("-I", "--include", help="include path", action="append") + parser.add_argument("--bindgen-flags", + help="flags to pass to bindgen", + nargs="*") parser.add_argument( "clangargs", metavar="CLANGARGS", @@ -48,11 +55,17 @@ def main(): "https://docs.rs/bindgen/latest/bindgen/struct.Builder.html#method.clang_args)", nargs="*") args = parser.parse_args() - genargs = [] - # Bindgen settings we use for Chromium + # Args passed to the actual bindgen cli + genargs = [] genargs.append('--no-layout-tests') - genargs.append('--size_t-is-usize') + if args.bindgen_flags is not None: + for flag in args.bindgen_flags: + genargs.append("--" + flag) + + # TODO(danakj): We need to point bindgen to + # //third_party/rust-toolchain/bin/rustfmt. + genargs.append('--no-rustfmt-bindings') genargs += ['--rust-target', 'nightly'] if args.depfile: @@ -65,7 +78,12 @@ def main(): genargs.extend(filter_clang_args(args.clangargs)) env = os.environ if args.ld_library_path: - env["LD_LIBRARY_PATH"] = args.ld_library_path + if sys.platform == 'darwin': + env["DYLD_LIBRARY_PATH"] = args.ld_library_path + else: + env["LD_LIBRARY_PATH"] = args.ld_library_path + if args.libclang_path: + env["LIBCLANG_PATH"] = args.libclang_path returncode = subprocess.run([args.exe, *genargs], env=env).returncode if returncode != 0: # Make sure we don't emit anything if bindgen failed. diff --git a/build/rust/run_build_script.py b/build/rust/run_build_script.py index f184edc..fe8eb10 100755 --- a/build/rust/run_build_script.py +++ b/build/rust/run_build_script.py @@ -24,21 +24,21 @@ # That's it. We don't even support the other standard cargo:rustc- # output messages. +import argparse +import io import os +import platform +import re +import subprocess import sys +import tempfile -# Set up path to be able to import build_utils +# Set up path to be able to import action_helpers sys.path.append( os.path.join(os.path.dirname(os.path.abspath(__file__)), os.pardir, - os.pardir, 'build', 'android', 'gyp')) -from util import build_utils + os.pardir, 'build')) +import action_helpers -import argparse -import io -import subprocess -import re -import platform -import tempfile RUSTC_VERSION_LINE = re.compile(r"(\w+): (.*)") @@ -106,7 +106,24 @@ def main(): else: env["TARGET"] = args.target target_components = env["TARGET"].split("-") - env["CARGO_CFG_TARGET_ARCH"] = target_components[0] + if len(target_components) == 2: + env["CARGO_CFG_TARGET_ARCH"] = target_components[0] + env["CARGO_CFG_TARGET_VENDOR"] = '' + env["CARGO_CFG_TARGET_OS"] = target_components[1] + env["CARGO_CFG_TARGET_ENV"] = '' + elif len(target_components) == 3: + env["CARGO_CFG_TARGET_ARCH"] = target_components[0] + env["CARGO_CFG_TARGET_VENDOR"] = target_components[1] + env["CARGO_CFG_TARGET_OS"] = target_components[2] + env["CARGO_CFG_TARGET_ENV"] = '' + elif len(target_components) == 4: + env["CARGO_CFG_TARGET_ARCH"] = target_components[0] + env["CARGO_CFG_TARGET_VENDOR"] = target_components[1] + env["CARGO_CFG_TARGET_OS"] = target_components[2] + env["CARGO_CFG_TARGET_ENV"] = target_components[3] + else: + print(f'Invalid TARGET {env["TARGET"]}') + sys.exit(1) if args.features: for f in args.features: feature_name = f.upper().replace("-", "_") @@ -128,7 +145,8 @@ def main(): env=env, cwd=args.src_dir, encoding='utf8', - capture_output=True) + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) if proc.stderr.rstrip(): print(proc.stderr.rstrip(), file=sys.stderr) @@ -142,7 +160,7 @@ def main(): # AtomicOutput will ensure we only write to the file on disk if what we # give to write() is different than what's currently on disk. - with build_utils.AtomicOutput(args.output) as output: + with action_helpers.atomic_output(args.output) as output: output.write(flags.encode("utf-8")) # Copy any generated code out of the temporary directory, @@ -155,7 +173,7 @@ def main(): if not os.path.exists(out_dir): os.makedirs(out_dir) with open(in_path, 'rb') as input: - with build_utils.AtomicOutput(out_path) as output: + with action_helpers.atomic_output(out_path) as output: content = input.read() output.write(content) diff --git a/build/rust/run_rs_bindings_from_cc.py b/build/rust/run_rs_bindings_from_cc.py index 6885f33..bf3dd13 100755 --- a/build/rust/run_rs_bindings_from_cc.py +++ b/build/rust/run_rs_bindings_from_cc.py @@ -10,13 +10,10 @@ import subprocess import sys -# Set up path to be able to import build_utils. THIS_DIR = os.path.dirname(os.path.abspath(__file__)) CHROMIUM_SRC_DIR = os.path.relpath(os.path.join(THIS_DIR, os.pardir, os.pardir)) sys.path.append(THIS_DIR) -sys.path.append(os.path.join(CHROMIUM_SRC_DIR, 'build', 'android', 'gyp')) from run_bindgen import filter_clang_args -from util import build_utils RUST_TOOLCHAIN_DIR = os.path.join(CHROMIUM_SRC_DIR, "third_party", "rust-toolchain") @@ -37,9 +34,9 @@ def quote_arg(x): def main(): parser = argparse.ArgumentParser() - parser.add_argument("--targets_and_headers_from_gn", + parser.add_argument("--targets_and_args_from_gn", metavar="FILE", - help="File parsed into --targets_and_headers Crubit arg", + help="File parsed into --targets_and_args Crubit arg", required=True), parser.add_argument("--public_headers", metavar="FILE", @@ -72,14 +69,15 @@ def main(): [os.path.relpath(hdr) for hdr in args.public_headers.split(",")]))) # Targets to headers map. - with open(args.targets_and_headers_from_gn, "r") as f: - targets_and_headers = json.load(f) - for entry in targets_and_headers: + with open(args.targets_and_args_from_gn, "r") as f: + targets_and_args = json.load(f) + for entry in targets_and_args: + entry["f"] = ["supported"] hdrs = entry["h"] for i in range(len(hdrs)): hdrs[i] = os.path.relpath(hdrs[i]) - generator_args.append("--targets_and_headers={0}".format( - json.dumps(targets_and_headers))) + generator_args.append("--targets_and_args={0}".format( + json.dumps(targets_and_args))) # All Crubit invocations in Chromium share the following cmdline args. generator_args.append(f"--rustfmt_exe_path={RUSTFMT_EXE_PATH}") diff --git a/build/rust/rust_bindgen.gni b/build/rust/rust_bindgen.gni index caad79e..e57bf48 100644 --- a/build/rust/rust_bindgen.gni +++ b/build/rust/rust_bindgen.gni @@ -7,6 +7,24 @@ import("//build/config/rust.gni") import("//build/config/sysroot.gni") import("//build/rust/rust_static_library.gni") +if (is_win) { + import("//build/toolchain/win/win_toolchain_data.gni") +} + +_bindgen_path = "${rust_bindgen_root}/bin/bindgen" +if (host_os == "win") { + _bindgen_path = "${_bindgen_path}.exe" +} + +# On Windows, the libclang.dll is beside the bindgen.exe, otherwise it is in +# ../lib. +_libclang_path = rust_bindgen_root +if (host_os == "win") { + _libclang_path += "/bin" +} else { + _libclang_path += "/lib" +} + # Template to build Rust/C bindings with bindgen. # # This template expands to a static_library containing the Rust side of the @@ -25,97 +43,154 @@ import("//build/rust/rust_static_library.gni") # on their dependencies and any configs applied. The same applies here. Set # any configs here as if this were a C target. # +# bindgen_flags: (optional) +# the additional bindgen flags which are passed to the executable +# # Rust targets depending on the output must include! the generated file. # template("rust_bindgen") { assert(defined(invoker.header), "Must specify the C header file to make bindings for.") - _target_name = target_name - _testonly = false - if (defined(invoker.testonly)) { - _testonly = invoker.testonly - } - if (defined(invoker.visibility)) { - _visibility = invoker.visibility - } - _deps = [] - if (defined(invoker.deps)) { - _deps += invoker.deps - } - - action(_target_name) { - testonly = _testonly - if (defined(_visibility)) { - visibility = _visibility - } + action(target_name) { + # bindgen relies on knowing the {{defines}} and {{include_dirs}} required + # to build the C++ headers which it's parsing. These are passed to the + # script's args and are populated using deps and configs. + forward_variables_from(invoker, + TESTONLY_AND_VISIBILITY + [ + "deps", + "configs", + ]) sources = [ invoker.header ] - # Several important compiler flags come from default_compiler_configs - configs = default_compiler_configs - if (defined(invoker.configs)) { - configs += invoker.configs + if (!defined(configs)) { + configs = [] } - bindgen_target = "//third_party/rust/bindgen/v0_60:bindgen($host_toolchain)" - - bindgen_obj_dir = get_label_info(bindgen_target, "root_out_dir") - bindgen_executable = "${bindgen_obj_dir}/bindgen" - if (is_win) { - bindgen_executable = "${bindgen_executable}.exe" - } + # Several important compiler flags come from default_compiler_configs + configs += default_compiler_configs output_dir = "$target_gen_dir" out_gen_rs = "$output_dir/${target_name}.rs" script = rebase_path("//build/rust/run_bindgen.py") - inputs = [ bindgen_executable ] + inputs = [ _bindgen_path ] depfile = "$target_out_dir/${target_name}.d" outputs = [ out_gen_rs ] - deps = [ bindgen_target ] - - # bindgen relies on knowing the {{defines}} and {{include_dirs}} required - # to build the C++ headers which it's parsing. These are passed to the - # script's args and are populated using deps and configs. - deps += _deps - args = [ "--exe", - rebase_path(bindgen_executable), + rebase_path(_bindgen_path, root_build_dir), "--header", rebase_path(invoker.header, root_build_dir), "--depfile", rebase_path(depfile, root_build_dir), "--output", rebase_path(out_gen_rs, root_build_dir), - "--ld-library-path", - rebase_path(clang_base_path + "/lib", root_build_dir), + "--libclang-path", + rebase_path(_libclang_path, root_build_dir), ] + if (is_linux) { + # Linux clang, and clang libs, use a shared libstdc++, which we must + # point to. + args += [ + "--ld-library-path", + rebase_path(clang_base_path + "/lib", root_build_dir), + ] + } + + if (defined(invoker.bindgen_flags)) { + args += [ "--bindgen-flags" ] + foreach(flag, invoker.bindgen_flags) { + args += [ flag ] + } + } + args += [ "--", "{{defines}}", "{{include_dirs}}", "{{cflags}}", "{{cflags_c}}", + ] - # This path contains important C headers (e.g. stddef.h) and {{cflags}} - # does not include it. Normally this path is implicitly added by clang but - # it does not happen for libclang. - # - # Add it last so includes from deps and configs take precedence. - "-isystem" + rebase_path( - clang_base_path + "/lib/clang/" + clang_version + "/include", - root_build_dir), - - # Passes C comments through as rustdoc attributes. - "-fparse-all-comments", - - # Default configs include "-fvisibility=hidden", and for some reason this - # causes bindgen not to emit function bindings. Override it. - "-fvisibility=default", + # libclang will run the system `clang` to find the "resource dir" which it + # places before the directory specified in `-isysroot`. + # https://github.com/llvm/llvm-project/blob/699e0bed4bfead826e210025bf33e5a1997c018b/clang/lib/Tooling/Tooling.cpp#L499-L510 + # + # This means include files are pulled from the wrong place if the `clang` + # says the wrong thing. We point it to our clang's resource dir which will + # make it behave consistently with our other command line flags and allows + # system headers to be found. + clang_resource_dir = + rebase_path(clang_base_path + "/lib/clang/" + clang_version, + root_build_dir) + args += [ + "-resource-dir", + clang_resource_dir, ] + + if (is_win) { + # On Windows we fall back to using system headers from a sysroot from + # depot_tools. This is negotiated by python scripts and the result is + # available in //build/toolchain/win/win_toolchain_data.gni. From there + # we get the `include_flags_imsvc` which point to the system headers. + if (host_cpu == "x86") { + win_toolchain_data = win_toolchain_data_x86 + } else if (host_cpu == "x64") { + win_toolchain_data = win_toolchain_data_x64 + } else if (host_cpu == "arm64") { + win_toolchain_data = win_toolchain_data_arm64 + } else { + error("Unsupported host_cpu, add it to win_toolchain_data.gni") + } + args += [ "${win_toolchain_data.include_flags_imsvc}" ] + } + + # Passes C comments through as rustdoc attributes. + if (is_win) { + args += [ "/clang:-fparse-all-comments" ] + } else { + args += [ "-fparse-all-comments" ] + } + + # Default configs include "-fvisibility=hidden", and for some reason this + # causes bindgen not to emit function bindings. Override it. + if (!is_win) { + args += [ "-fvisibility=default" ] + } + + if (is_win) { + # We pass MSVC style flags to clang on Windows, and libclang needs to be + # told explicitly to accept them. + args += [ "--driver-mode=cl" ] + + # On Windows, libclang adds arguments that it then fails to understand. + # -fno-spell-checking + # -fallow-editor-placeholders + # These should not cause bindgen to fail. + args += [ "-Wno-unknown-argument" ] + + # Replace these two arguments with a version that clang-cl can parse. + args += [ + "/clang:-fno-spell-checking", + "/clang:-fallow-editor-placeholders", + ] + } + + if (is_cfi) { + # LLVM searches for a default CFI ignorelist at (exactly) + # $(cwd)/lib/clang/$(llvm_version)/share/cfi_ignorelist.txt + # Even if we provide a custom -fsanitize-ignorelist, the absence + # of this default file will cause a fatal error. clang finds + # it within third_party/llvm-build, but for bindgen our cwd + # is the $out_dir. We _could_ create this file at the right + # location within the outdir using a "copy" target, but as + # we don't actually generate code within bindgen, the easier + # option is to tell bindgen to ignore all CFI ignorelists. + args += [ "-fno-sanitize-ignorelist" ] + } } } diff --git a/build/rust/rust_executable.gni b/build/rust/rust_executable.gni index ea22aa3..478f529 100644 --- a/build/rust/rust_executable.gni +++ b/build/rust/rust_executable.gni @@ -52,14 +52,12 @@ import("//build/rust/rust_target.gni") # This template is intended to serve the same purpose as 'rustc_library' # in Fuchsia. template("rust_executable") { - exclude_forwards = TESTONLY_AND_VISIBILITY + [ "configs" ] rust_target(target_name) { - forward_variables_from(invoker, "*", exclude_forwards) + forward_variables_from(invoker, + "*", + TESTONLY_AND_VISIBILITY + [ "configs" ]) forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) - if (defined(invoker.configs)) { - library_configs = [] - library_configs = invoker.configs - } + executable_configs = invoker.configs target_type = "executable" assert(!defined(cxx_bindings)) } diff --git a/build/rust/rust_macro.gni b/build/rust/rust_macro.gni index 427220b..bcbb30e 100644 --- a/build/rust/rust_macro.gni +++ b/build/rust/rust_macro.gni @@ -10,10 +10,15 @@ import("//build/rust/rust_target.gni") # code for compilation. template("rust_macro") { rust_target(target_name) { - forward_variables_from(invoker, "*", TESTONLY_AND_VISIBILITY) + forward_variables_from(invoker, + "*", + TESTONLY_AND_VISIBILITY + [ "configs" ]) forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) - - # Has rust_target generate a rust_proc_macro GN output. + proc_macro_configs = invoker.configs target_type = "rust_proc_macro" } } + +set_defaults("rust_macro") { + configs = default_rust_proc_macro_configs +} diff --git a/build/rust/rust_shared_library.gni b/build/rust/rust_shared_library.gni index 6bea51d..e1358c5 100644 --- a/build/rust/rust_shared_library.gni +++ b/build/rust/rust_shared_library.gni @@ -4,23 +4,25 @@ import("//build/rust/rust_target.gni") -# Defines a shared_library containing just Rust code. Has the same variables -# available as a rust_static_library. See rust_static_library.gni for -# documentation. -template("rust_shared_library") { - exclude_forwards = TESTONLY_AND_VISIBILITY + [ "configs" ] - rust_target(target_name) { - forward_variables_from(invoker, "*", exclude_forwards) - forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) - if (defined(invoker.configs)) { - library_configs = [] - library_configs = invoker.configs +# Rust dylibs should not be built outside of component builds. Non-component +# builds use build configurations that conflict with the linking of dylibs. +if (is_component_build) { + # Defines a shared_library containing just Rust code. Has the same variables + # available as a rust_static_library. See rust_static_library.gni for + # documentation. + template("rust_shared_library") { + rust_target(target_name) { + forward_variables_from(invoker, + "*", + TESTONLY_AND_VISIBILITY + [ "configs" ]) + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + shared_library_configs = invoker.configs + target_type = "shared_library" + crate_type = "cdylib" } - target_type = "shared_library" - crate_type = "cdylib" } -} -set_defaults("rust_shared_library") { - configs = default_shared_library_configs + set_defaults("rust_shared_library") { + configs = default_shared_library_configs + } } diff --git a/build/rust/rust_static_library.gni b/build/rust/rust_static_library.gni index 82b4304..03d3366 100644 --- a/build/rust/rust_static_library.gni +++ b/build/rust/rust_static_library.gni @@ -23,24 +23,13 @@ import("//build/rust/rust_target.gni") # discovered source files must match this list. (This is not yet enforced, # but will be.) # -# epoch (optional) -# The major version of the library, which is used to differentiate between -# multiple versions of the same library name. This includes all leading 0s -# and the first non-zero value in the crate's version. This should be left -# as the default, which is "0", for first-party code unless there are -# multiple versions of a crate present. For third-party code, the version -# epoch (matching the directory it is found in) should be specified. -# -# Examples: -# 1.0.2 => epoch = "1" -# 4.2.0 => epoch = "4" -# 0.2.7 => epoch = "0.2" -# 0.0.3 => epoch = "0.0.3" -# # edition (optional) # Edition of the Rust language to be used. # Options are "2015", "2018" and "2021". Defaults to "2021". # +# allow_unsafe (optional) +# Set to true to allow unsafe code in this target. Defaults to false. +# # configs (optional) # A list of config labels (in the GN meaning) applying to this target. # @@ -132,6 +121,13 @@ import("//build/rust/rust_target.gni") # test_inputs (optional) # Same as above but for the unit tests target # +# rustc_metadata (optional) +# Override the metadata identifying the target's version. This allows e.g. +# linking otherwise conflicting versions of the same Rust library. The +# metadata string will also be appended to the output library names. +# Should be used sparingly, since generally we should have one version and +# build of each target. +# # Example of usage: # # rust_static_library("foo_bar") { @@ -147,37 +143,15 @@ import("//build/rust/rust_target.gni") # This template is intended to serve the same purpose as 'rustc_library' # in Fuchsia. template("rust_static_library") { - exclude_forwards = TESTONLY_AND_VISIBILITY + [ "configs" ] _target_name = target_name - # For Gtest unittests, we must avoid dropping the object files even when - # there's no edges into them, as the tests register themselves through - # static initializers. For C++ this is done by not putting them in a library - # at all, but Rust must be compiled into an rlib. - # - # On AIX there's no flag to avoid pruning unit tests in this library from - # the linking step. - _whole_archive = defined(invoker.is_gtest_unittests) && - invoker.is_gtest_unittests && current_os != "aix" - rust_target(_target_name) { - forward_variables_from(invoker, "*", exclude_forwards) + forward_variables_from(invoker, + "*", + TESTONLY_AND_VISIBILITY + [ "configs" ]) forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) - if (defined(invoker.configs)) { - library_configs = [] - library_configs = invoker.configs - } + library_configs = invoker.configs target_type = "rust_library" - - if (_whole_archive) { - all_dependent_configs = [ ":${_target_name}_whole_archive" ] - } - } - - if (_whole_archive) { - config("${_target_name}_whole_archive") { - ldflags = [ "-LinkWrapper,add-whole-archive=${_target_name}" ] - } } } diff --git a/build/rust/rust_target.gni b/build/rust/rust_target.gni index 61657fe..1fdad63 100644 --- a/build/rust/rust_target.gni +++ b/build/rust/rust_target.gni @@ -3,7 +3,6 @@ # found in the LICENSE file. import("//build/config/rust.gni") -import("//build/rust/analyze.gni") import("//build/rust/rust_unit_test.gni") # The //build directory is re-used for non-Chromium products. We do not support @@ -33,24 +32,34 @@ if (build_with_chromium) { # be provided. template("rust_target") { - # Only one of `crate_root` or `generate_crate_root` can be specified, or - # neither. - assert(!defined(invoker.crate_root) || - !(defined(invoker.generate_crate_root) && invoker.generate_crate_root)) - _target_name = target_name _crate_name = target_name if (defined(invoker.crate_name)) { _crate_name = invoker.crate_name } + _generate_crate_root = + defined(invoker.generate_crate_root) && invoker.generate_crate_root + + # Only one of `crate_root` or `generate_crate_root` can be specified, or + # neither. + assert(!defined(invoker.crate_root) || !_generate_crate_root) if (defined(invoker.output_dir) && invoker.output_dir != "") { - _out_dir = invoker.output_dir - } else { - _out_dir = target_out_dir + # This is where the build target (.exe, .rlib, etc) goes. + _output_dir = invoker.output_dir } - if (defined(invoker.generate_crate_root) && invoker.generate_crate_root) { + # This is where the OUT_DIR environment variable points to when running a + # build script and when compiling the build target, for consuming generated + # files. + _env_out_dir = "$target_gen_dir/$_target_name" + + _allow_unsafe = false + if (defined(invoker.allow_unsafe)) { + _allow_unsafe = invoker.allow_unsafe + } + + if (_generate_crate_root) { generated_file("${_target_name}_crate_root") { outputs = [ "${target_gen_dir}/${target_name}.rs" ] contents = [ @@ -77,8 +86,8 @@ template("rust_target") { ] } } - _crate_root = - string_join("", get_target_outputs(":${_target_name}_crate_root")) + _generated_crate_root = get_target_outputs(":${_target_name}_crate_root") + _crate_root = _generated_crate_root[0] } else if (defined(invoker.crate_root)) { _crate_root = invoker.crate_root } else if (invoker.target_type == "executable") { @@ -108,29 +117,22 @@ template("rust_target") { if (defined(invoker.edition)) { _edition = invoker.edition } - _configs = [ string_join("", - [ - "//build/rust:edition_", - _edition, - ]) ] + + assert(!defined(configs)) + _configs = [ "//build/rust:edition_${_edition}" ] + _test_configs = [] if (invoker.target_type == "executable") { - if (defined(invoker.executable_configs)) { - _configs += invoker.executable_configs - } + _configs += invoker.executable_configs } else if (invoker.target_type == "rust_proc_macro") { - if (defined(invoker.proc_macro_configs)) { - _configs += invoker.proc_macro_configs - } + _configs += invoker.proc_macro_configs + _test_configs += [ "//build/rust:proc_macro_extern" ] + } else if (invoker.target_type == "shared_library") { + _configs += invoker.shared_library_configs } else { - if (defined(invoker.library_configs)) { - _configs += invoker.library_configs - } + _configs += invoker.library_configs } - _forward_to_host_toolchain = false + if (invoker.target_type == "rust_proc_macro") { - if (current_toolchain != host_toolchain_no_sanitizers) { - _forward_to_host_toolchain = true - } _main_target_suffix = "${target_name}__proc_macro" } else { _main_target_suffix = "__rlib" @@ -151,6 +153,8 @@ template("rust_target") { } } + _is_data_dep = defined(invoker.is_data_dep) && invoker.is_data_dep + _build_unit_tests = false if (defined(invoker.build_native_rust_unit_tests)) { _build_unit_tests = @@ -168,19 +172,12 @@ template("rust_target") { "outside the Chromium build.") _cxx_bindings = invoker.cxx_bindings } - _rustenv = [ "OUT_DIR=" + rebase_path(_out_dir) ] + _rustenv = [ "OUT_DIR=" + + rebase_path(_env_out_dir, get_path_info(_crate_root, "dir")) ] if (defined(invoker.rustenv)) { _rustenv += invoker.rustenv } - # TODO(danakj): This could be a hash generated from the input crate, such as - # from its path, in which case the BUILD.gn would not need to specify - # anything. But GN doesn't give us a hash function to make that easy. - _metadata = "0" - if (defined(invoker.epoch)) { - _metadata = invoker.epoch - } - # We require that all source files are listed, even though this is # not a requirement for rustc. The reason is to ensure that tools # such as `gn deps` give the correct answer, and thus we trigger @@ -188,37 +185,50 @@ template("rust_target") { # TODO(crbug.com/1256930) - verify this is correct assert(defined(invoker.sources), "sources must be listed") - if (_forward_to_host_toolchain) { - # Redirect to the host toolchain. + if (invoker.target_type == "rust_proc_macro" && + !toolchain_for_rust_host_build_tools) { + # Redirect to the proc macro toolchain, which uses prebuilt stdlib libraries + # that are not built with panic=abort. group(_target_name) { testonly = _testonly if (defined(_visibility)) { visibility = _visibility } - public_deps = [ - ":${_target_name}${_main_target_suffix}($host_toolchain_no_sanitizers)", - ] + public_deps = + [ ":${_target_name}${_main_target_suffix}($rust_macro_toolchain)" ] } not_needed(invoker, "*") not_needed([ + "_allow_unsafe", "_build_unit_tests", "_crate_root", "_crate_name", "_cxx_bindings", "_deps", "_aliased_deps", - "_metadata", + "_is_data_dep", + "_rustc_metadata", "_out_dir", "_public_deps", "_rustenv", "_rustflags", "_support_use_from_cpp", - "_test_deps", "_testonly", "_visibility", ]) } else { + _rustc_metadata = "" + if (defined(invoker.rustc_metadata)) { + _rustc_metadata = invoker.rustc_metadata + } + + # Add a metadata-influenced suffix to the output name for libraries only. + _output_suffix = "" + if (invoker.target_type == "rust_library" && _rustc_metadata != "") { + _output_suffix = "-${_rustc_metadata}" + } + group(_target_name) { testonly = _testonly if (defined(_visibility)) { @@ -229,6 +239,12 @@ template("rust_target") { # like direct dependencies, so we expose them both in public_deps. public_deps = [ ":${_target_name}${_main_target_suffix}" ] + # TODO(danakj): This would not be needed if we stopped forwarding through + # a group in the common (non-procmacro) case. + if (_is_data_dep) { + data_deps = [ ":${_target_name}${_main_target_suffix}" ] + } + if (_cxx_bindings != []) { public_deps += [ ":${_target_name}_cxx_generated" ] @@ -241,7 +257,7 @@ template("rust_target") { # If C++ depends on and links in the library, we need to make sure C++ # links in the Rust stdlib. This is orthogonal to if the library exports # bindings for C++ to use. - deps = [ "//build/rust/std" ] + deps = [ "//build/rust/std:stdlib_for_clang" ] } } @@ -261,13 +277,62 @@ template("rust_target") { } if (!defined(invoker.no_std) || !invoker.no_std) { - _rust_deps += [ "//build/rust/std:prebuilt_std_for_rustc" ] + _rust_deps += [ "//build/rust/std:stdlib_for_rustc" ] } # You must go through the groups above to get to these targets. _visibility = [] _visibility = [ ":${_target_name}" ] + if (_build_unit_tests) { + _unit_test_target = "${_target_name}_unittests" + if (defined(invoker.unit_test_target)) { + _unit_test_target = invoker.unit_test_target + } + + rust_unit_test(_unit_test_target) { + testonly = true + crate_root = _crate_root + sources = invoker.sources + [ crate_root ] + rustflags = _rustflags + env_out_dir = _env_out_dir + if (defined(invoker.unit_test_output_dir)) { + output_dir = invoker.unit_test_output_dir + } + deps = _rust_deps + _public_deps + aliased_deps = _rust_aliased_deps + public_deps = [ ":${_target_name}" ] + if (defined(invoker.test_deps)) { + deps += invoker.test_deps + } + inputs = [] + if (defined(invoker.inputs)) { + inputs += invoker.inputs + } + if (defined(invoker.test_inputs)) { + inputs += invoker.test_inputs + } + if (defined(invoker.executable_configs)) { + configs = [] + configs += invoker.executable_configs + } + configs += _test_configs + rustenv = _rustenv + + if (!_allow_unsafe) { + configs += [ "//build/rust:forbid_unsafe" ] + } + } + } else { + not_needed([ + "_crate_root", + "_crate_name", + "_rustc_metadata", + "_test_configs", + ]) + not_needed(invoker, [ "executable_configs" ]) + } + target(invoker.target_type, "${_target_name}${_main_target_suffix}") { forward_variables_from(invoker, "*", @@ -279,7 +344,7 @@ template("rust_target") { "rustflags", "rustenv", "configs", - "output_dir", + "unit_test_output_dir", "unit_test_target", "test_inputs", ]) @@ -294,32 +359,28 @@ template("rust_target") { aliased_deps = _rust_aliased_deps public_deps = _rust_public_deps rustflags = _rustflags - rustflags += [ string_join("", - [ - "-Cmetadata=", - _metadata, - ]) ] + if (_rustc_metadata != "") { + rustflags += [ "-Cmetadata=${_rustc_metadata}" ] + } rustenv = _rustenv + if (_generate_crate_root) { + deps += [ ":${_target_name}_crate_root" ] + sources += [ _crate_root ] + } + # The Rust tool() declarations, like C++ ones, use the output_name and # output_dir, so that GN targets can override these if needed. Here we # give them their default values, or allow them to be overridden. - output_dir = _out_dir - if (!defined(output_name) || output_name == "") { - output_name = crate_name + if (defined(_output_dir)) { + output_dir = _output_dir } - - if (compute_inputs_for_analyze) { - deps += [ ":${_target_name}_analyze" ] + if (!defined(output_name) || output_name == "") { + output_name = "${crate_name}${_output_suffix}" } - } - if (compute_inputs_for_analyze) { - # Find and depend on all rust files in the crate for the purpose of `gn - # analyze`. - analyze_rust("${_target_name}_analyze") { - forward_variables_from(invoker, "*", [ "crate_root" ]) - crate_root = _crate_root + if (!_allow_unsafe) { + configs += [ "//build/rust:forbid_unsafe" ] } } @@ -332,6 +393,7 @@ template("rust_target") { } sources = _cxx_bindings deps = _cxx_deps + _public_deps + configs = _configs if (is_component_build) { # In a component_build the cxx bindings may be linked into a shared @@ -346,50 +408,5 @@ template("rust_target") { } else { not_needed([ "_cxx_deps" ]) } - - if (_build_unit_tests) { - _unit_test_target = "${_target_name}_unittests" - if (defined(invoker.unit_test_target)) { - _unit_test_target = invoker.unit_test_target - } - - rust_unit_test(_unit_test_target) { - forward_variables_from(invoker, [ "sources" ]) - testonly = true - crate_root = _crate_root - rustflags = _rustflags - output_dir = _out_dir - deps = _rust_deps + _public_deps - aliased_deps = _rust_aliased_deps - public_deps = [ ":${_target_name}" ] - if (defined(invoker.test_deps)) { - deps += invoker.test_deps - } - inputs = [] - if (defined(invoker.inputs)) { - inputs += invoker.inputs - } - if (defined(invoker.test_inputs)) { - inputs += invoker.test_inputs - } - if (defined(invoker.executable_configs)) { - configs = [] - configs = invoker.executable_configs - } - rustenv = _rustenv - } - } else { - not_needed([ - "_crate_root", - "_crate_name", - "_metadata", - ]) - } } } - -set_defaults("rust_target") { - executable_configs = default_executable_configs - library_configs = default_compiler_configs - proc_macro_configs = default_rust_proc_macro_configs -} diff --git a/build/rust/rust_unit_test.gni b/build/rust/rust_unit_test.gni index 879cb84..6cfa827 100644 --- a/build/rust/rust_unit_test.gni +++ b/build/rust/rust_unit_test.gni @@ -15,6 +15,7 @@ import("//build/rust/rust_unit_tests_group.gni") # # sources # edition (optional) +# allow_unsafe (optional) # configs (optional) # deps (optional) # crate_root (optional) @@ -62,11 +63,7 @@ template("rust_unit_test") { if (defined(invoker.edition)) { _edition = invoker.edition } - _configs += [ string_join("", - [ - "//build/rust:edition_", - _edition, - ]) ] + _configs += [ "//build/rust:edition_${_edition}" ] # We require that all source files are listed, even though this is # not a requirement for rustc. The reason is to ensure that tools @@ -80,6 +77,15 @@ template("rust_unit_test") { deps = [ ":$_exe_target_name" ] } + # The OUT_DIR for a crate's tests should point to the same OUT_DIR that the + # library it's testing used. The `env_out_dir` variable can be used to specify + # that directory. + if (defined(invoker.env_out_dir)) { + _env_out_dir = invoker.env_out_dir + } else { + _env_out_dir = target_gen_dir + } + # TODO(crbug.com/1229320): Arrange to run test executables on try bots. # TODO(crbug.com/gn/146): Allow Rust executables to depend on C/C++ source # sets. @@ -90,21 +96,15 @@ template("rust_unit_test") { forward_variables_from(invoker, "*", [ + "allow_unsafe", "edition", "features", "rustflags", "configs", - "output_name", "crate_name", "crate_root", + "env_out_dir", ]) - - if (defined(output_dir) && output_dir != "") { - _out_dir = output_dir - } else { - _out_dir = target_out_dir - } - if (!defined(output_name) || output_name == "") { output_name = _crate_name } @@ -122,7 +122,9 @@ template("rust_unit_test") { if (!defined(rustenv)) { rustenv = [] } - rustenv += [ "OUT_DIR=" + rebase_path(_out_dir) ] + + rustenv += [ "OUT_DIR=" + + rebase_path(_env_out_dir, get_path_info(_crate_root, "dir")) ] metadata = { # Consumed by "rust_unit_tests_group" gni template. rust_unit_test_executables = [ _crate_name ] diff --git a/build/rust/rust_unit_tests_group.gni b/build/rust/rust_unit_tests_group.gni index a210d9e..c2cdfe4 100644 --- a/build/rust/rust_unit_tests_group.gni +++ b/build/rust/rust_unit_tests_group.gni @@ -20,11 +20,12 @@ # # Example usage: # -# # This will generate a script at out/Default/bin/run_foo_tests that wraps -# # out/Default/foo_crate1_unittests, -# # out/Default/foo_mixed_source_set2_rs_unittests, -# # and out/Default/foo_mixed_source_set3_rs_unittests executables containing -# # native Rust unit tests. +# # This will generate a script at out/Default/bin/run_foo_tests (or +# # run_foo_tests.bat on Windows) that wraps the executables containing +# # native Rust unit tests: +# # * out/Default/foo_crate1_unittests +# # * out/Default/foo_mixed_source_set2_rs_unittests +# # * out/Default/foo_mixed_source_set3_rs_unittests # rust_unit_tests_group("foo_tests") { # deps = [ # "foo_crate1", @@ -32,7 +33,6 @@ # "foo_mixed_source_set3", # ] # } -# # TODO(https://crbug.com/1271215): Mention .bat generation once implemented. template("rust_unit_tests_group") { assert(defined(invoker.deps), "deps must be listed") @@ -40,7 +40,11 @@ template("rust_unit_tests_group") { # As noted in the top-level comment of //testing/buildbot/gn_isolate_map.pyl # the script *must* be in output_dir/bin/run_$target (or # output_dir\bin\run_$target.bat on Windows). - _script_filepath = "$root_out_dir/bin/run_${target_name}" + bat = "" + if (is_win) { + bat = ".bat" + } + _script_filepath = "$root_out_dir/bin/run_${target_name}${bat}" # Gathering metadata provided by the rust_unit_test gni template from all of # our dependencies. @@ -56,15 +60,11 @@ template("rust_unit_tests_group") { # Generating a script that can run all of the wrapped Rust unit test # executables. - # - # TODO(https://crbug.com/1271215): Also generate: bin/run_${target_name}.bat - # when *targeting* Windows: if (is_win) { ... }. (The "targeting" part means - # that we can't just detect whether the build is *hosted* on Windows.) action(target_name) { forward_variables_from(invoker, "*", []) testonly = true - script = "//testing/scripts/rust/generate_bash_script.py" + script = "//testing/scripts/rust/generate_script.py" inputs = [ _metadata_filepath ] outputs = [ _script_filepath ] @@ -86,5 +86,8 @@ template("rust_unit_tests_group") { "--script-path", rebase_path(_script_filepath, root_build_dir), ] + if (is_win) { + args += [ "--make-bat" ] + } } } diff --git a/build/rust/rustc_wrapper.py b/build/rust/rustc_wrapper.py index 239d1b3..1c61e9f 100755 --- a/build/rust/rustc_wrapper.py +++ b/build/rust/rustc_wrapper.py @@ -11,11 +11,11 @@ import sys import re -# Set up path to be able to import build_utils +# Set up path to be able to import action_helpers. sys.path.append( os.path.join(os.path.dirname(os.path.abspath(__file__)), os.pardir, - os.pardir, 'build', 'android', 'gyp')) -from util import build_utils + os.pardir, 'build')) +import action_helpers # This script wraps rustc for (currently) these reasons: # * To work around some ldflags escaping performed by ninja/gn @@ -81,6 +81,8 @@ # using our clang toolchain. That will remove the need for most of this # script. +FILE_RE = re.compile("[^:]+: (.+)") + # Equivalent of python3.9 built-in def remove_lib_suffix_from_l_args(text): @@ -89,11 +91,56 @@ def remove_lib_suffix_from_l_args(text): return text +def verify_inputs(depline, sources, abs_build_root): + """Verify everything used by rustc (found in `depline`) was specified in the + GN build rule (found in `sources` or `inputs`). + + TODO(danakj): This allows things in `sources` that were not actually used by + rustc since third-party packages sources need to be a union of all build + configs/platforms for simplicity in generating build rules. For first-party + code we could be more strict and reject things in `sources` that were not + consumed. + """ + + # str.removeprefix() does not exist before python 3.9. + def remove_prefix(text, prefix): + if text.startswith(prefix): + return text[len(prefix):] + return text + + def normalize_path(p): + return os.path.relpath(os.path.normpath(remove_prefix( + p, abs_build_root))).replace('\\', '/') + + # Collect the files that rustc says are needed. + found_files = {} + m = FILE_RE.match(depline) + if m: + files = m.group(1) + found_files = {normalize_path(f): f for f in files.split()} + # Get which ones are not listed in GN. + missing_files = found_files.keys() - sources + + if not missing_files: + return True + + # The matching did a bunch of path manipulation to get paths relative to the + # build dir such that they would match GN. In errors, we will print out the + # exact path that rustc produces for easier debugging and writing of stdlib + # config rules. + for file_files_key in missing_files: + gn_type = "sources" if file_files_key.endswith(".rs") else "inputs" + print(f'ERROR: file not in GN {gn_type}: {found_files[file_files_key]}', + file=sys.stderr) + return False + + def main(): parser = argparse.ArgumentParser() parser.add_argument('--rustc', required=True, type=pathlib.Path) - parser.add_argument('--depfile', type=pathlib.Path) - parser.add_argument('--rsp', type=pathlib.Path) + parser.add_argument('--depfile', required=True, type=pathlib.Path) + parser.add_argument('--rsp', type=pathlib.Path, required=True) + parser.add_argument('--target-windows', action='store_true') parser.add_argument('args', metavar='ARG', nargs='+') args = parser.parse_args() @@ -102,28 +149,39 @@ def main(): ldflags_separator = remaining_args.index("LDFLAGS") rustenv_separator = remaining_args.index("RUSTENV", ldflags_separator) + # Sometimes we duplicate the SOURCES list into the command line for debugging + # issues on the bots. + try: + sources_separator = remaining_args.index("SOURCES", rustenv_separator) + except: + sources_separator = None rustc_args = remaining_args[:ldflags_separator] ldflags = remaining_args[ldflags_separator + 1:rustenv_separator] - rustenv = remaining_args[rustenv_separator + 1:] + rustenv = remaining_args[rustenv_separator + 1:sources_separator] - is_windows = os.name == 'nt' + abs_build_root = os.getcwd().replace('\\', '/') + '/' + is_windows = sys.platform == 'win32' or args.target_windows rustc_args.extend(["-Clink-arg=%s" % arg for arg in ldflags]) - # Workaround for https://bugs.chromium.org/p/gn/issues/detail?id=249 - if args.rsp: - with open(args.rsp) as rspfile: - rsp_args = [l.rstrip() for l in rspfile.read().split(' ') if l.rstrip()] - if is_windows: - # Work around for hard-coded string in gn; full fix will come from - # https://gn-review.googlesource.com/c/gn/+/12460 - rsp_args = [arg for arg in rsp_args if not arg.endswith("-Bdynamic")] - # Work around for "-l.lib", where ".lib" suffix is undesirable. - # Full fix will come from https://gn-review.googlesource.com/c/gn/+/12480 - rsp_args = [remove_lib_suffix_from_l_args(arg) for arg in rsp_args] - with open(args.rsp, 'w') as rspfile: - rspfile.write("\n".join(rsp_args)) - rustc_args.append(f'@{args.rsp}') + with open(args.rsp) as rspfile: + rsp_args = [l.rstrip() for l in rspfile.read().split(' ') if l.rstrip()] + + sources_separator = rsp_args.index("SOURCES") + sources = set(rsp_args[sources_separator + 1:]) + rsp_args = rsp_args[:sources_separator] + + if is_windows: + # Work around for "-l.lib", where ".lib" suffix is undesirable. + # Full fix will come from https://gn-review.googlesource.com/c/gn/+/12480 + rsp_args = [remove_lib_suffix_from_l_args(arg) for arg in rsp_args] + out_rsp = str(args.rsp) + ".rsp" + with open(out_rsp, 'w') as rspfile: + # rustc needs the rsp file to be separated by newlines. Note that GN + # generates the file separated by spaces: + # https://bugs.chromium.org/p/gn/issues/detail?id=249, + rspfile.write("\n".join(rsp_args)) + rustc_args.append(f'@{out_rsp}') env = os.environ.copy() fixed_env_vars = [] @@ -132,25 +190,34 @@ def main(): env[k] = v fixed_env_vars.append(k) - r = subprocess.run([args.rustc, *rustc_args], env=env, check=False) + try: + r = subprocess.run([args.rustc, *rustc_args], env=env, check=False) + finally: + os.remove(out_rsp) if r.returncode != 0: sys.exit(r.returncode) - # Now edit the depfile produced - if args.depfile is not None: + final_depfile_lines = [] + dirty = False + with open(args.depfile, encoding="utf-8") as d: + # Figure out which lines we want to keep in the depfile. If it's not the + # whole file, we will rewrite the file. env_dep_re = re.compile("# env-dep:(.*)=.*") - replacement_lines = [] - dirty = False - with open(args.depfile, encoding="utf-8") as d: - for line in d: - m = env_dep_re.match(line) - if m and m.group(1) in fixed_env_vars: - dirty = True # skip this line - else: - replacement_lines.append(line) - if dirty: # we made a change, let's write out the file - with build_utils.AtomicOutput(args.depfile) as output: - output.write("\n".join(replacement_lines).encode("utf-8")) + for line in d: + m = env_dep_re.match(line) + if m and m.group(1) in fixed_env_vars: + dirty = True # We want to skip this line. + else: + final_depfile_lines.append(line) + + # Verify each dependent file is listed in sources/inputs. + for line in final_depfile_lines: + if not verify_inputs(line, sources, abs_build_root): + return 1 + + if dirty: # we made a change, let's write out the file + with action_helpers.atomic_output(args.depfile) as output: + output.write("\n".join(final_depfile_lines).encode("utf-8")) if __name__ == '__main__': diff --git a/build/rust/std/BUILD.gn b/build/rust/std/BUILD.gn index b5fe564..b0f3134 100644 --- a/build/rust/std/BUILD.gn +++ b/build/rust/std/BUILD.gn @@ -15,11 +15,10 @@ # * Find the Rust standard library. # * Remap some generic allocator symbols to the specific allocator symbols # in use. -# This file does both those things. Any C++ target containing Rust .rlibs -# should simply depend on :std within this file and it will be taken care of. -# In practice, this will in future be taken care of by a standard template -# used for each Rust source set, so that a typical user of Rust need not -# think about it. +# This file takes care of equivalent tasks for our C++ toolchains. +# C++ targets should depend upon either local_stdlib_for_clang or +# prebuilt_stdlib_for_clang to ensure that Rust code can be linked into their +# C++ executables. # # This is obviously a bit fragile - rustc might do other magic in future. # But, linking with a final C++ toolchain is something often needed, and @@ -27,9 +26,25 @@ # officially possible. import("//build/config/compiler/compiler.gni") +import("//build/config/coverage/coverage.gni") import("//build/config/rust.gni") +import("//build/config/sanitizers/sanitizers.gni") if (toolchain_has_rust) { + # Equivalent of allocator symbols injected by rustc. + source_set("remap_alloc") { + sources = [ + # `alias.*`, `compiler_specific.h`, and `immediate_crash.*` have been + # copied from `//base`. + # TODO(https://crbug.com/1475734): Avoid duplication / reuse code. + "alias.cc", + "alias.h", + "compiler_specific.h", + "immediate_crash.h", + "remap_alloc.cc", + ] + } + # List of Rust stdlib rlibs which are present in the official Rust toolchain # we are using from the Android team. This is usually a version or two behind # nightly. Generally this matches the toolchain we build ourselves, but if @@ -55,7 +70,6 @@ if (toolchain_has_rust) { "object", "panic_abort", "panic_unwind", - "proc_macro", "rustc_demangle", "std_detect", "test", @@ -63,6 +77,13 @@ if (toolchain_has_rust) { "unwind", ] + if (toolchain_for_rust_host_build_tools) { + # When building proc macros, include the proc_macro crate in what should be + # copied with find_stdlib. Otherwise it is not copied since it will be + # unused. + stdlib_files += [ "proc_macro" ] + } + # Different Rust toolchains may add or remove files relative to the above # list. That can be specified in gn args for anyone using (for instance) # nightly or some other experimental toolchain, prior to it becoming official. @@ -79,183 +100,346 @@ if (toolchain_has_rust) { "rustc_std_workspace_std", ] - action("find_stdlib") { - # Collect prebuilt Rust libraries from toolchain package and copy to a known - # location. + config("stdlib_dependent_libs") { + # TODO(crbug.com/1434092): These should really be `libs`, however that + # breaks. Normally, we specify lib files with the `.lib` suffix but + # then when rustc links an EXE, it invokes lld-link with `.lib.lib` + # instead. # - # The Rust toolchain contains prebuilt rlibs for the standard library and - # its dependencies. However, they have unstable names: an unpredictable - # metadata hash is appended to the known crate name. - # - # We must depend on these rlibs explicitly when rustc is not in charge of - # linking. However, it is difficult to construct GN rules to do so when the - # names can't be known statically. - # - # This action copies the prebuilt rlibs to a known location, removing the - # metadata part of the name. In the process it verifies we have all the - # libraries we expect and none that we don't. A depfile is generated so this - # step is re-run when any libraries change. The action script additionally - # verifies rustc matches the expected version, which is unrelated but this - # is a convenient place to do so. + # Omitting the `.lib` suffix breaks linking as well, when clang drives + # the linking step of a C++ EXE that depends on Rust. + if (is_win) { + # The libc crate tries to link in the Windows CRT, but we specify the CRT + # library ourselves in //build/config/win:dynamic_crt and + # //build/config/win:static_crt because Rustc does not allow us to specify + # using the debug CRT: https://github.com/rust-lang/rust/issues/39016 + # + # As such, we have disabled all #[link] directives from the libc crate, + # and we need to add any non-CRT libs here. + ldflags = [ "legacy_stdio_definitions.lib" ] + } + } + config("stdlib_public_dependent_libs") { + # TODO(crbug.com/1434092): These should really be `libs`, however that + # breaks. Normally, we specify lib files with the `.lib` suffix but + # then when rustc links an EXE, it invokes lld-link with `.lib.lib` + # instead. # - # The action refers to `stdlib_files`, `skip_stdlib_files`, and the - # associated //build/config/rust.gni vars `removed_rust_stdlib_libs` and - # `added_rust_stdlib_libs` for which rlib files to expect. - # `extra_sysroot_libs` is also used to copy non-std libs, if any. - script = "find_std_rlibs.py" - depfile = "$target_out_dir/stdlib.d" - out_libdir = rebase_path(target_out_dir, root_build_dir) - out_depfile = rebase_path(depfile, root_build_dir) - - # For the rustc sysroot we must include even the rlibs we don't pass to the - # C++ linker. - all_stdlibs_to_copy = stdlib_files + skip_stdlib_files - args = [ - "--rust-bin-dir", - rebase_path("${rust_sysroot}/bin", root_build_dir), - "--output", - out_libdir, - "--depfile", - out_depfile, - - # Due to limitations in Ninja's handling of .d files, we have to pick - # *the first* of our outputs. To make diagnostics more obviously - # related to the Rust standard library, we ensure libstd.rlib is first. - "--depfile-target", - stdlib_files[0], - - # Create a dependency on the rustc version so this action is re-run when - # it changes. This argument is not actually read by the script. - "--rustc-revision", - rustc_revision, - ] - - if (!use_unverified_rust_toolchain) { - args += [ - "--stdlibs", - string_join(",", all_stdlibs_to_copy), + # Omitting the `.lib` suffix breaks linking as well, when clang drives + # the linking step of a C++ EXE that depends on Rust. + if (is_win) { + # These libs provide functions that are used by the stdlib. Rust crates + # will try to link them in with #[link] directives. However these don't + # get propagated to the linker if Rust isn't driving the linking (a C++ + # target that depends on a Rust rlib). So these need to be specified + # explicitly. + ldflags = [ + "advapi32.lib", + "bcrypt.lib", + "kernel32.lib", + "ntdll.lib", + "userenv.lib", + "ws2_32.lib", ] } - if (extra_sysroot_libs != []) { - args += [ - "--extra-libs", - string_join(",", extra_sysroot_libs), + # From rust/library/std/src/sys/unix/mod.rs. + # TODO(danakj): We should generate this list somehow when building or rolling + # the Rust toolchain? + if (is_android) { + libs = [ "dl" ] + } else if (target_os == "freebsd") { + libs = [ + "execinfo", + "pthread", + ] + } else if (target_os == "netbsd") { + libs = [ + "rt", + "pthread", + ] + } else if (is_mac) { + libs = [ "System" ] + } else if (is_ios) { + libs = [ + "System", + "objc", + ] + frameworks = [ + "Security.framework", + "Foundation.framework", + ] + } else if (is_fuchsia) { + libs = [ + "zircon", + "fdio", ] } + } - args += [ - "--target", - rust_abi_target, - ] + # Construct sysroots for rustc invocations to better control what libraries + # are linked. We have two: one with copied prebuilt libraries, and one with + # our locally-built std. Both reside in root_out_dir: we must only have one of + # each per GN toolchain anyway. - outputs = [] - foreach(lib, all_stdlibs_to_copy) { - outputs += [ "$target_out_dir/lib$lib.rlib" ] + sysroot_lib_subdir = "lib/rustlib/$rust_abi_target/lib" + + if (!rust_prebuilt_stdlib) { + local_rustc_sysroot = "$root_out_dir/local_rustc_sysroot" + + # All std targets starting with core build with our sysroot. It starts empty + # and is incrementally built. The directory must exist at the start. + generated_file("empty_sysroot_for_std_build") { + outputs = [ "$local_rustc_sysroot/$sysroot_lib_subdir/.empty" ] + contents = "" + visibility = [ ":*" ] } - foreach(lib, extra_sysroot_libs) { - outputs += [ "$target_out_dir/$lib" ] + + # Target to be depended on by std build targets. Creates the initially empty + # sysroot. + group("std_build_deps") { + deps = [ ":empty_sysroot_for_std_build" ] + public_configs = [ ":local_stdlib_sysroot" ] + visibility = [ "rules:*" ] } - } - if (local_libstd_supported) { - # Builds the Rust standard library and creates a sysroot that can be - # supplied to rustc. - copy("local_rustc_sysroot") { + profiler_builtins_crates = [ + "core", + "compiler_builtins", + "profiler_builtins", + ] + + # When using instrumentation, profiler_builtins and its deps must be built + # before other std crates. Other crates depend on this target so they are + # built in the right order. + group("profiler_builtins_group") { deps = [] - sources = [] + foreach(libname, profiler_builtins_crates) { + deps += [ "rules:$libname" ] + } + visibility = [ "rules:*" ] + } + + config("local_stdlib_sysroot") { + sysroot = rebase_path(local_rustc_sysroot, root_build_dir) + rustflags = [ "--sysroot=$sysroot" ] + visibility = [ ":*" ] + } + + # When given -Zsanitize=..., rustc insists on passing a sanitizer runtime to + # the linker it invokes. Unfortunately, our C++ ldflags already tell the + # linker to link against a C++ sanitizer runtime - which contains the same + # symbols. So, make a blank library. + # The list of relevant sanitizers here is taken from + # https://github.com/rust-lang/rust/blob/7e7483d26e3cec7a44ef00cf7ae6c9c8c918bec6/compiler/rustc_codegen_ssa/src/back/link.rs#L1148 + template("rustc_sanitizer_runtime") { + rt_name = target_name + not_needed([ "invoker" ]) + static_library("sanitizer_rt_$rt_name") { + sources = [] + output_name = "librustc-${rust_channel}_rt.$rt_name" + output_dir = "$local_rustc_sysroot/$sysroot_lib_subdir" + if (is_win) { + arflags = [ "/llvmlibempty" ] + } + } + } + rustc_sanitizer_runtimes = [] + if (is_asan) { + rustc_sanitizer_runtime("asan") { + } + rustc_sanitizer_runtimes += [ ":sanitizer_rt_asan" ] + } + if (is_lsan) { + rustc_sanitizer_runtime("lsan") { + } + rustc_sanitizer_runtimes += [ ":sanitizer_rt_lsan" ] + } + if (is_msan) { + rustc_sanitizer_runtime("msan") { + } + rustc_sanitizer_runtimes += [ ":sanitizer_rt_msan" ] + } + if (is_tsan) { + rustc_sanitizer_runtime("tsan") { + } + rustc_sanitizer_runtimes += [ ":sanitizer_rt_tsan" ] + } + if (is_hwasan) { + rustc_sanitizer_runtime("hwasan") { + } + rustc_sanitizer_runtimes += [ ":sanitizer_rt_hwasan" ] + } + group("local_stdlib_libs") { + assert(toolchain_has_rust, + "Some C++ target is depending on Rust code even though " + + "toolchain_has_rust=false. Usually this would mean" + + "a NaCl target is depending on Rust, as there's no Rust " + + "toolchain targetting NaCl.") + all_dependent_configs = [ ":stdlib_dependent_libs" ] + deps = [] foreach(libname, stdlib_files + skip_stdlib_files) { - rule = "rules:$libname" - deps += [ rule ] - outdir = get_label_info(rule, "target_out_dir") - sources += [ "$outdir/$libname/lib${libname}.rlib" ] + deps += [ "rules:$libname" ] } + deps += rustc_sanitizer_runtimes + visibility = [ ":*" ] + } - outputs = [ "$target_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/{{source_file_part}}" ] + # Builds the stdlib and points the rustc `--sysroot` to them. Used by + # targets for which linking is driven by Rust (bins and dylibs). + group("stdlib_for_rustc") { + all_dependent_configs = [ ":local_stdlib_sysroot" ] + public_deps = [ ":local_stdlib_libs" ] } - } - # Create a sysroot containing our std rlibs to pass to rustc invocations. This - # gives better control of where rustc may pick libraries from. - copy("prebuilt_rustc_sysroot") { - deps = [ ":find_stdlib" ] - sources = get_target_outputs(":find_stdlib") - outputs = [ "$target_out_dir/prebuilt_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/{{source_file_part}}" ] - } + # Builds and links against the Rust stdlib. Used by targets for which + # linking is driven by C++. + group("stdlib_for_clang") { + all_dependent_configs = [ ":stdlib_public_dependent_libs" ] + public_deps = [ + ":local_stdlib_libs", + ":remap_alloc", + ] + } + } else { + action("find_stdlib") { + # Collect prebuilt Rust libraries from toolchain package and copy to a + # known location. + # + # The Rust toolchain contains prebuilt rlibs for the standard library and + # its dependencies. However, they have unstable names: an unpredictable + # metadata hash is appended to the known crate name. + # + # We must depend on these rlibs explicitly when rustc is not in charge of + # linking. However, it is difficult to construct GN rules to do so when + # the names can't be known statically. + # + # This action copies the prebuilt rlibs to a known location, removing the + # metadata part of the name. In the process it verifies we have all the + # libraries we expect and none that we don't. A depfile is generated so + # this step is re-run when any libraries change. The action script + # additionally verifies rustc matches the expected version, which is + # unrelated but this is a convenient place to do so. + # + # The action refers to `stdlib_files`, `skip_stdlib_files`, and the + # associated //build/config/rust.gni vars `removed_rust_stdlib_libs` and + # `added_rust_stdlib_libs` for which rlib files to expect. + # `extra_sysroot_libs` is also used to copy non-std libs, if any. + script = "find_std_rlibs.py" + depfile = "$target_out_dir/stdlib.d" + out_libdir = rebase_path(target_out_dir, root_build_dir) + out_depfile = rebase_path(depfile, root_build_dir) - if (local_libstd_supported) { - config("local_stdlib_for_rustc") { - # Match the output directory of :local_rustc_sysroot - sysroot = - rebase_path("$target_out_dir/local_rustc_sysroot", root_build_dir) - rustflags = [ "--sysroot=$sysroot" ] + # For the rustc sysroot we must include even the rlibs we don't pass to + # the C++ linker. + all_stdlibs_to_copy = stdlib_files + skip_stdlib_files + args = [ + "--rust-bin-dir", + rebase_path("${rust_sysroot}/bin", root_build_dir), + "--output", + out_libdir, + "--depfile", + out_depfile, + + # Due to limitations in Ninja's handling of .d files, we have to pick + # *the first* of our outputs. To make diagnostics more obviously + # related to the Rust standard library, we ensure libstd.rlib is first. + "--depfile-target", + stdlib_files[0], + + # Create a dependency on the rustc version so this action is re-run when + # it changes. This argument is not actually read by the script. + "--rustc-revision", + rustc_revision, + ] + + if (extra_sysroot_libs != []) { + args += [ + "--extra-libs", + string_join(",", extra_sysroot_libs), + ] + } + + args += [ + "--target", + rust_abi_target, + ] + + outputs = [] + foreach(lib, all_stdlibs_to_copy) { + outputs += [ "$target_out_dir/lib$lib.rlib" ] + } + foreach(lib, extra_sysroot_libs) { + outputs += [ "$target_out_dir/$lib" ] + } + + visibility = [ ":*" ] } - } - config("prebuilt_stdlib_for_rustc") { - # Match the output directory of :prebuilt_rustc_sysroot - sysroot = - rebase_path("$target_out_dir/prebuilt_rustc_sysroot", root_build_dir) - rustflags = [ "--sysroot=$sysroot" ] - } + prebuilt_rustc_sysroot = "$root_out_dir/prebuilt_rustc_sysroot" + copy("prebuilt_rustc_copy_to_sysroot") { + assert(enable_rust, + "Some C++ target is including Rust code even though " + + "enable_rust=false") + deps = [ ":find_stdlib" ] + sources = get_target_outputs(":find_stdlib") + outputs = + [ "$prebuilt_rustc_sysroot/$sysroot_lib_subdir/{{source_file_part}}" ] - if (local_libstd_supported) { - # Use the sysroot generated by :local_rustc_sysroot, which transitively builds - # std. Only for use in specific tests for now. - group("local_std_for_rustc") { - assert( - enable_rust, - "Some C++ target is including Rust code even though enable_rust=false") - all_dependent_configs = [ ":local_stdlib_for_rustc" ] - deps = [ ":local_rustc_sysroot" ] + visibility = [ ":*" ] } - } - # Use the sysroot generated by :prebuilt_rustc_sysroot. Almost all Rust targets should depend - # on this. - group("prebuilt_std_for_rustc") { - assert( - enable_rust, - "Some C++ target is including Rust code even though enable_rust=false") - all_dependent_configs = [ ":prebuilt_stdlib_for_rustc" ] - deps = [ ":prebuilt_rustc_sysroot" ] - } + config("prebuilt_stdlib_sysroot") { + # Match the output directory of :prebuilt_rustc_copy_to_sysroot + sysroot = rebase_path(prebuilt_rustc_sysroot, root_build_dir) + rustflags = [ "--sysroot=$sysroot" ] + visibility = [ ":*" ] + } + + config("prebuilt_stdlib_libs") { + ldflags = [] + lib_dir = rebase_path("$prebuilt_rustc_sysroot/$sysroot_lib_subdir", + root_build_dir) - config("rust_stdlib_config") { - ldflags = [] - out_libdir = rebase_path(target_out_dir, root_build_dir) - foreach(lib, stdlib_files) { - this_file = "$out_libdir/lib$lib.rlib" - ldflags += [ this_file ] + # We're unable to make these files regular gn dependencies because + # they're prebuilt. Instead, we'll pass them in the ldflags. This doesn't + # work for all types of build because ldflags propagate differently from + # actual dependencies and therefore can end up in different targets from + # the remap_alloc.cc above. For example, in a component build, we might + # apply the remap_alloc.cc file and these ldlags to shared object A, + # while shared object B (that depends upon A) might get only the ldflags + # but not remap_alloc.cc, and thus the build will fail. There is + # currently no known solution to this for the prebuilt stdlib - this + # problem does not apply with configurations where we build the stdlib + # ourselves, which is what we'll use in production. + foreach(lib, stdlib_files) { + this_file = "$lib_dir/lib$lib.rlib" + ldflags += [ this_file ] + } + visibility = [ ":*" ] } - if (is_win) { - # Our C++ builds already link against a wide variety of Windows API import libraries, - # but the Rust stdlib requires a few extra. - ldflags += [ - "bcrypt.lib", - "userenv.lib", - ] + + # Use the sysroot generated by :prebuilt_rustc_copy_to_sysroot. + group("stdlib_for_rustc") { + all_dependent_configs = [ ":prebuilt_stdlib_sysroot" ] + deps = [ ":prebuilt_rustc_copy_to_sysroot" ] } - } - source_set("remap_alloc") { - sources = [ - "immediate_crash.h", - "remap_alloc.cc", - ] - } + # Links the Rust stdlib. Used by targets for which linking is driven by + # C++. + group("stdlib_for_clang") { + all_dependent_configs = [ + ":prebuilt_stdlib_libs", + ":stdlib_public_dependent_libs", + ] + deps = [ ":prebuilt_rustc_copy_to_sysroot" ] - # TODO(crbug.com/1368806): rework this so when using locally-built std, we - # don't link the prebuilt std as well. - group("std") { - assert( - enable_rust, - "Some C++ target is including Rust code even though enable_rust=false") - all_dependent_configs = [ ":rust_stdlib_config" ] - deps = [ - ":find_stdlib", - ":remap_alloc", - ] + # The host builds tools toolchain supports Rust only and does not use + # the allocator remapping to point it to PartitionAlloc. + if (!toolchain_for_rust_host_build_tools) { + deps += [ ":remap_alloc" ] + } + } } } diff --git a/build/rust/std/BUILD.gn.hbs b/build/rust/std/BUILD.gn.hbs new file mode 100644 index 0000000..ec7b961 --- /dev/null +++ b/build/rust/std/BUILD.gn.hbs @@ -0,0 +1,122 @@ +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# @generated from build/rust/std/BUILD.gn.hbs by tools/crates/gnrt. Do not edit! + +import("//build/rust/cargo_crate.gni") + +{{#each rules}} +cargo_crate("{{this.0}}") { + {{#with this.1.concrete}} + crate_type = "{{crate_type}}" + crate_root = "{{crate_root}}" + sources = [ + {{#each sources}} + "{{this}}", + {{/each}} + ] + inputs = [ + {{#each inputs}} + "{{this}}", + {{/each}} + ] + no_std = true + + # Unit tests skipped. Generate with --with-tests to include them. + build_native_rust_unit_tests = false + edition = "{{edition}}" + cargo_pkg_version = "{{cargo_pkg_version}}" + {{#with cargo_pkg_authors}} + cargo_pkg_authors = "{{this}}" + {{/with}} + cargo_pkg_name = "{{cargo_pkg_name}}" + {{#with cargo_pkg_description}} + cargo_pkg_description = "{{gn_escape this}}" + {{/with}} + library_configs -= [ + "//build/config/compiler:chromium_code", + {{#each remove_library_configs}} + "{{this}}", + {{/each}} + {{#unless extra_kv.include_coverage}} + "//build/config/coverage:default_coverage", + {{/unless}} + ] + library_configs += [ + "//build/config/compiler:no_chromium_code", + {{#if extra_kv.immediate_abort}} + "//build/rust:panic_immediate_abort", + {{/if}} + ] + executable_configs -= [ + "//build/config/compiler:chromium_code", + {{#each remove_executable_configs}} + "{{this}}", + {{/each}} + ] + executable_configs += [ + "//build/config/compiler:no_chromium_code", + {{#each add_executable_configs}} + "{{this}}", + {{/each}} + ] + deps = [ + "//build/rust/std:std_build_deps", + {{#if extra_kv.include_coverage}} + "//build/rust/std:profiler_builtins_group", + {{/if}} + {{#unless deps}} + ] + {{/unless}} + {{#each deps}} + {{#if @first}} + {{#each this.rules}} + "{{this}}", + {{/each}} + ] + {{else}} + if ({{this.cond}}) { + deps = [ + {{#each this.rules}} + "{{this}}", + {{/each}} + ] + } + {{/if}} + {{/each}} + {{#if aliased_deps}} + aliased_deps = { + {{#each aliased_deps}} + {{this.0}} = "{{this.1}}" + {{/each}} + } + {{/if}} + {{#if features}} + features = [ + {{#each features}} + "{{this}}", + {{/each}} + ] + {{/if}} + {{#unless extra_kv.skip_build_rs}} + {{#if build_root}} + build_root = "{{build_root}}" + build_sources = [ "{{build_root}}" ] + {{/if}} + {{/unless}} + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + {{#if extra_kv.no_link_directives}} + "-Zlink-directives=false", + {{/if}} + ] + output_dir = "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" + {{/with}} +} +{{/each}} diff --git a/build/rust/std/alias.cc b/build/rust/std/alias.cc new file mode 100644 index 0000000..f0ea031 --- /dev/null +++ b/build/rust/std/alias.cc @@ -0,0 +1,22 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// This file has been copied from //base/debug/alias.cc ( additionally the APIs +// were moved into the `build_rust_std` namespace). +// +// TODO(https://crbug.com/1475734): Avoid code duplication / reuse code. + +#include "build/rust/std/alias.h" + +#include "build/rust/std/compiler_specific.h" + +namespace build_rust_std { +namespace debug { + +// This file/function should be excluded from LTO/LTCG to ensure that the +// compiler can't see this function's implementation when compiling calls to it. +NOINLINE void Alias(const void* var) {} + +} // namespace debug +} // namespace build_rust_std diff --git a/build/rust/std/alias.h b/build/rust/std/alias.h new file mode 100644 index 0000000..068e440 --- /dev/null +++ b/build/rust/std/alias.h @@ -0,0 +1,37 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// This file has been copied from //base/debug/alias.h (and then trimmed to just +// the APIs / macros needed by //build/rust/std; additionally the APIs were +// moved into the `build_rust_std` namespace). +// +// TODO(https://crbug.com/1475734): Avoid code duplication / reuse code. + +#ifndef BUILD_RUST_STD_ALIAS_H_ +#define BUILD_RUST_STD_ALIAS_H_ + +#include + +namespace build_rust_std { +namespace debug { + +// Make the optimizer think that |var| is aliased. This can be used to prevent a +// local variable from being optimized out (which is something that +// `NO_CODE_FOLDING` macro definition below depends on). See +// //base/debug/alias.h for more details. +void Alias(const void* var); + +} // namespace debug + +} // namespace build_rust_std + +// Prevent code folding (where a linker identifies functions that are +// bit-identical and overlays them, which saves space but it leads to confusing +// call stacks because multiple symbols are at the same address). See +// //base/debug/alias.h for more details. +#define NO_CODE_FOLDING() \ + const int line_number = __LINE__; \ + build_rust_std::debug::Alias(&line_number) + +#endif // BUILD_RUST_STD_ALIAS_H_ diff --git a/build/rust/std/compiler_specific.h b/build/rust/std/compiler_specific.h new file mode 100644 index 0000000..47c3e29 --- /dev/null +++ b/build/rust/std/compiler_specific.h @@ -0,0 +1,38 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// This file has been copied from //base/compiler_specific.h (and then +// significantly trimmed to just the APIs / macros needed by //build/rust/std). +// +// TODO(https://crbug.com/1475734): Avoid code duplication / reuse code. + +#ifndef BUILD_RUST_STD_COMPILER_SPECIFIC_H_ +#define BUILD_RUST_STD_COMPILER_SPECIFIC_H_ + +#include "build/build_config.h" + +#if defined(COMPILER_MSVC) && !defined(__clang__) +#error "Only clang-cl is supported on Windows, see https://crbug.com/988071" +#endif + +#if defined(__has_attribute) +#define HAS_ATTRIBUTE(x) __has_attribute(x) +#else +#define HAS_ATTRIBUTE(x) 0 +#endif + +// Annotate a function indicating it should not be inlined. +// Use like: +// NOINLINE void DoStuff() { ... } +#if defined(__clang__) && HAS_ATTRIBUTE(noinline) +#define NOINLINE [[clang::noinline]] +#elif defined(COMPILER_GCC) && HAS_ATTRIBUTE(noinline) +#define NOINLINE __attribute__((noinline)) +#elif defined(COMPILER_MSVC) +#define NOINLINE __declspec(noinline) +#else +#define NOINLINE +#endif + +#endif // BUILD_RUST_STD_COMPILER_SPECIFIC_H_ diff --git a/build/rust/std/fake_root/.cargo/config.toml b/build/rust/std/fake_root/.cargo/config.toml deleted file mode 100644 index 72e1499..0000000 --- a/build/rust/std/fake_root/.cargo/config.toml +++ /dev/null @@ -1,5 +0,0 @@ -[source.crates-io] -replace-with = 'vendored-sources' - -[source.vendored-sources] -directory = '../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor' diff --git a/build/rust/std/fake_root/.cargo/config.toml.template b/build/rust/std/fake_root/.cargo/config.toml.template new file mode 100644 index 0000000..40b6270 --- /dev/null +++ b/build/rust/std/fake_root/.cargo/config.toml.template @@ -0,0 +1,5 @@ +[source.crates-io] +replace-with = 'vendored-sources' + +[source.vendored-sources] +directory = '../../../../RUST_SRC_ROOT/vendor' diff --git a/build/rust/std/fake_root/.gitignore b/build/rust/std/fake_root/.gitignore index e9e2199..a21a472 100644 --- a/build/rust/std/fake_root/.gitignore +++ b/build/rust/std/fake_root/.gitignore @@ -1,2 +1,4 @@ /target/ /Cargo.lock +/Cargo.toml +/.cargo/config.toml diff --git a/build/rust/std/fake_root/Cargo.toml b/build/rust/std/fake_root/Cargo.toml deleted file mode 100644 index 55f3a07..0000000 --- a/build/rust/std/fake_root/Cargo.toml +++ /dev/null @@ -1,16 +0,0 @@ -[package] -name = "fake_root" -version = "0.1.0" -edition = "2021" - -[dependencies] -test = { path = "../../../../third_party/rust-toolchain/lib/rustlib/src/rust/library/test" } - -[dependencies.std] -path = "../../../../third_party/rust-toolchain/lib/rustlib/src/rust/library/std" -features = ["backtrace", "profiler"] - -[patch.crates-io] -rustc-std-workspace-core = { path = '../../../../third_party/rust-toolchain/lib/rustlib/src/rust/library/rustc-std-workspace-core' } -rustc-std-workspace-alloc = { path = '../../../../third_party/rust-toolchain/lib/rustlib/src/rust/library/rustc-std-workspace-alloc' } -rustc-std-workspace-std = { path = '../../../../third_party/rust-toolchain/lib/rustlib/src/rust/library/rustc-std-workspace-std' } diff --git a/build/rust/std/fake_root/Cargo.toml.template b/build/rust/std/fake_root/Cargo.toml.template new file mode 100644 index 0000000..a6d2a59 --- /dev/null +++ b/build/rust/std/fake_root/Cargo.toml.template @@ -0,0 +1,25 @@ +[package] +name = "fake_root" +version = "0.1.0" +edition = "2021" + +[dependencies] + +[dependencies.sysroot] +path = "../../../../RUST_SRC_ROOT/library/sysroot" +default-features = false +features = [ + "backtrace", + "panic-unwind", + "profiler", + "std_detect_dlsym_getauxval", + "std_detect_file_io" +] + +[dependencies.compiler_builtins] +features = ["weak-intrinsics"] + +[patch.crates-io] +rustc-std-workspace-core = { path = '../../../../RUST_SRC_ROOT/library/rustc-std-workspace-core' } +rustc-std-workspace-alloc = { path = '../../../../RUST_SRC_ROOT/library/rustc-std-workspace-alloc' } +rustc-std-workspace-std = { path = '../../../../RUST_SRC_ROOT/library/rustc-std-workspace-std' } diff --git a/build/rust/std/find_std_rlibs.py b/build/rust/std/find_std_rlibs.py index b91e631..386258f 100755 --- a/build/rust/std/find_std_rlibs.py +++ b/build/rust/std/find_std_rlibs.py @@ -33,8 +33,6 @@ def main(): parser.add_argument("--depfile-target", help="Target to key depfile around", required=True) - parser.add_argument("--stdlibs", - help="Expected list of standard library libraries") parser.add_argument("--extra-libs", help="List of extra non-libstd sysroot libraries") parser.add_argument("--rustc-revision", @@ -42,21 +40,6 @@ def main(): " on the rustc version.") args = parser.parse_args() - # Expected rlibs by concise name (the crate name, plus a disambiguating suffix - # e.g. "-2" when necessary). - if args.stdlibs: - rlibs_expected = set() - for lib in args.stdlibs.split(','): - # The version is only included if there's more than one of `name`, and - # even then is only included for the 2nd onward. - (name, version) = EXPECTED_STDLIB_INPUT_REGEX.match(lib).group(1, 2) - if version is None: - rlibs_expected.add(name) - else: - rlibs_expected.add(f"{name}-{version}") - else: - rlibs_expected = None - extra_libs = set() if args.extra_libs: for lib in args.extra_libs.split(','): @@ -133,11 +116,6 @@ def copy_file(infile, outfile): output_filename = f"lib{concise_name}.rlib" - if rlibs_expected is not None: - if concise_name not in rlibs_expected: - raise Exception("Found stdlib rlib that wasn't expected: %s" % f) - rlibs_expected.remove(concise_name) - infile = os.path.join(rustlib_dir, f) outfile = os.path.join(args.output, output_filename) copy_file(infile, outfile) @@ -148,9 +126,6 @@ def copy_file(infile, outfile): copy_file(infile, outfile) depfile.write("\n") - if rlibs_expected: - raise Exception("We failed to find all expected stdlib rlibs: %s" % - ','.join(rlibs_expected)) if __name__ == '__main__': diff --git a/build/rust/std/gnrt_config.toml b/build/rust/std/gnrt_config.toml index 40fb850..5e87d0c 100644 --- a/build/rust/std/gnrt_config.toml +++ b/build/rust/std/gnrt_config.toml @@ -2,30 +2,98 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -[libc] -# Requires: -# * cfg(libc_align) for new enough rustc, which is normally provided by build.rs -# but we don't run build scripts for std crates. -# * cfg(libc_priv_mod_use) is required for the below to work properly. -# * cfg(libc_core_cvoid) to use the same ffi c_void definition as libcore. -# -# See https://github.com/rust-lang/libc/blob/master/build.rs -cfg = ['libc_align', 'libc_priv_mod_use', 'libc_core_cvoid'] - -[std] -# Requires: -# * cfg(backtrace_in_libstd) because it directly includes .rs files from the -# backtrace code rather than including it as a dependency. backtrace's -# implementation has special-purpose code to handle this. -# * STD_ENV_ARCH is referenced in architecture-dependent code. Note this is the -# target arch, and as such `$rust_target_arch` is passed literally to GN. This -# variable is set at build time in build/config/rust.gni -# -# See https://github.com/rust-lang/rust/blob/master/library/std/build.rs -cfg = ['backtrace_in_libstd'] -env = ['STD_ENV_ARCH=$rust_target_arch'] - -[test] -# Requires: -# * CFG_DISABLE_UNSTABLE_FEATURES=0 to match how it's built by x.py. -env = ['CFG_DISABLE_UNSTABLE_FEATURES=0'] +# Provides per-crate and overall configuration options to gnrt. + +[resolve] +# There is a virtual "sysroot" crate that includes all sysroot libraries as +# dependencies. +root = "sysroot" + +# Workaround for Cargo issue: hashbrown's Cargo.toml uses an unstable Cargo +# feature that leads to incorrect `cargo metadata` output. +# +# TODO(https://github.com/rust-lang/cargo/issues/10801): remove workaround once +# issue is fixed. +remove_crates = ['allocator-api2'] + +[gn] +build_file_template = "BUILD.gn.hbs" + +[all-crates] +# std crates should have metadata applied to them. This would avoid any symbol +# conflicts between std dependencies and third_party/rust crates. +# +# However, we can't apply it yet. GN can't automatically clean old artifacts, +# nor can we delete and rebuild the sysroot on every build. +# +# TODO(crbug.com/1245714): set up GN rules to rebuilt the sysroot only when +# needed. Then set this metadata. +# +# rustc_metadata = "libstd" + +extra_kv = { include_coverage = true } + +[crate.compiler_builtins] +# Dependencies of profiler_builtins must have instrumentation disabled +extra_kv = { include_coverage = false } + +[crate.core] +# Dependencies of profiler_builtins must have instrumentation disabled +extra_kv = { include_coverage = false, immediate_abort = true } +extra_src_roots = ['../../portable-simd/crates/core_simd', '../../stdarch/crates/core_arch'] +extra_input_roots = ['../primitive_docs'] + +[crate.hashbrown] +# Workaround for Cargo issue: hashbrown's Cargo.toml uses an unstable Cargo +# feature that leads to incorrect `cargo metadata` output. +# +# TODO(https://github.com/rust-lang/cargo/issues/10801): remove workaround once +# issue is fixed. +remove_deps = ['allocator-api2'] + +[crate.libc] +# This target is #[no_core] when included by std, which is incompatible with +# profiling. +# +# Suppress link directives since we specify the deps in GN configs. +extra_kv = { include_coverage = false, no_link_directives = true } + +[crate.profiler_builtins] +# The build script is used to compile a profiler-rt library, but we get +# the profiler rt library from clang, so we skip this. +# +# profiler_builtins cannot depend on itself, which it would if build with +# instrumentation. +extra_kv = { include_coverage = false, skip_build_rs = true } + +[crate.rustc-std-workspace-alloc] +# This target is #[no_core] which is incompatible with profiling. +extra_kv = { include_coverage = false } + +[crate.rustc-std-workspace-core] +# Dependencies of profiler_builtins must have instrumentation disabled +extra_kv = { include_coverage = false } + +[crate.std] +extra_src_roots = ['../../backtrace/src', '../../portable-simd/crates/std_float/src'] +extra_input_roots = ['../primitive_docs', '../../core/src', '../../portable-simd/crates/core_simd/src', '../../stdarch/crates/core_arch/src'] + +# Remove this from std. It will be depended on directly when needed. +exclude_deps_in_gn = ['profiler_builtins'] + +extra_kv = { immediate_abort = true } + +[crate.test] +# test only depends on proc_macro as an internal detail of the Rust build, so +# it's implicitly included with std/test. However, we list the std crates and +# construct the sysroot explicitly. We don't need this, and we don't even want +# it during cross-compiles (since we will only build host proc_macro crates). +exclude_deps_in_gn = ['proc_macro'] + +[crate.unwind] +# The build script is used to set up the link directives which we skip below. +# It uses `cc` to run a compiler to do so, which we don't support in build +# scripts. +# +# Suppress link directives since we specify the deps in GN configs. +extra_kv = { skip_build_rs = true, no_link_directives = true } \ No newline at end of file diff --git a/build/rust/std/immediate_crash.h b/build/rust/std/immediate_crash.h index bc27350..7c13eb6 100644 --- a/build/rust/std/immediate_crash.h +++ b/build/rust/std/immediate_crash.h @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// This file is copied from //base/immediate_crash.h. +// This file has been copied from //base/immediate_crash.h. +// TODO(https://crbug.com/1475734): Avoid code duplication / reuse code. #ifndef BUILD_RUST_STD_IMMEDIATE_CRASH_H_ #define BUILD_RUST_STD_IMMEDIATE_CRASH_H_ diff --git a/build/rust/std/remap_alloc.cc b/build/rust/std/remap_alloc.cc index ceac756..bfd39b7 100644 --- a/build/rust/std/remap_alloc.cc +++ b/build/rust/std/remap_alloc.cc @@ -2,11 +2,19 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include -#include +#include +#include +#include +#include +#include "build/build_config.h" +#include "build/rust/std/alias.h" #include "build/rust/std/immediate_crash.h" +#if BUILDFLAG(IS_ANDROID) +#include +#endif + // When linking a final binary, rustc has to pick between either: // * The default Rust allocator // * Any #[global_allocator] defined in *any rlib in its dependency tree* @@ -37,16 +45,18 @@ // We're not (always) using rustc for final linking. For cases where we're not // Rustc as the final linker, we'll define those symbols here instead. // -// In future, we may wish to do something different from using the Rust -// default allocator (e.g. explicitly redirect to PartitionAlloc). We could -// do that here, or we could build a crate with a #[global_allocator] and -// redirect these symbols to that crate instead. The advantage of the latter -// is that it would work equally well for those cases where rustc is doing -// the final linking. At present, this is not necessary because -// PartitionAlloc-Everywhere successfully handles the calls to malloc which -// result from passing through this code. We might want to call into -// PA directly if we wished for Rust allocations to be in a different -// partition, or similar, in future. +// The Rust stdlib on Windows uses GetProcessHeap() which will bypass +// PartitionAlloc, so we do not forward these functions back to the stdlib. +// Instead, we pass them to PartitionAlloc, while replicating functionality from +// the unix stdlib to allow them to provide their increased functionality on top +// of the system functions. +// +// In future, we may build a crate with a #[global_allocator] and +// redirect these symbols back to Rust in order to use to that crate instead. +// +// Instead of going through system functions like malloc() we may want to call +// into PA directly if we wished for Rust allocations to be in a different +// partition, or similar, in the future. // // They're weak symbols, because this file will sometimes end up in targets // which are linked by rustc, and thus we would otherwise get duplicate @@ -55,33 +65,104 @@ extern "C" { -void* __rdl_alloc(size_t, size_t); -void __rdl_dealloc(void*); -void* __rdl_realloc(void*, size_t, size_t, size_t); -void* __rdl_alloc_zeroed(size_t, size_t); +#ifdef COMPONENT_BUILD +#if BUILDFLAG(IS_WIN) +#define REMAP_ALLOC_ATTRIBUTES __declspec(dllexport) __attribute__((weak)) +#else +#define REMAP_ALLOC_ATTRIBUTES \ + __attribute__((visibility("default"))) __attribute__((weak)) +#endif +#else +#define REMAP_ALLOC_ATTRIBUTES __attribute__((weak)) +#endif // COMPONENT_BUILD + +// This must exist as the stdlib depends on it to prove that we know the +// alloc shims below are unstable. In the future we may be required to replace +// them with a #[global_allocator] crate (see file comment above for more). +// +// Marked as weak as when Rust drives linking it includes this symbol itself, +// and we don't want a collision due to C++ being in the same link target, where +// C++ causes us to explicitly link in the stdlib and this symbol here. +[[maybe_unused]] __attribute__(( + weak)) unsigned char __rust_no_alloc_shim_is_unstable; + +REMAP_ALLOC_ATTRIBUTES void* __rust_alloc(size_t size, size_t align) { + // This mirrors kMaxSupportedAlignment from + // base/allocator/partition_allocator/partition_alloc_constants.h. + // ParitionAlloc will crash if given an alignment larger than this. + constexpr size_t max_align = (1 << 21) / 2; + if (align > max_align) { + return nullptr; + } + + if (align <= alignof(std::max_align_t)) { + return malloc(size); + } else { + // Note: PartitionAlloc by default will route aligned allocations back to + // malloc() (the fast path) if they are for a small enough alignment. So we + // just unconditionally use aligned allocation functions here. + // https://source.chromium.org/chromium/chromium/src/+/refs/heads/main:base/allocator/partition_allocator/shim/allocator_shim_default_dispatch_to_partition_alloc.cc;l=219-226;drc=31d99ff4aa0cc0b75063325ff243e911516a5a6a -void* __attribute__((weak)) __rust_alloc(size_t a, size_t b) { - return __rdl_alloc(a, b); +#if defined(COMPILER_MSVC) + // Because we use PartitionAlloc() as the allocator, free() is able to find + // this allocation, instead of the usual requirement to use _aligned_free(). + return _aligned_malloc(size, align); +#elif BUILDFLAG(IS_ANDROID) + // Android has no posix_memalign() exposed: + // https://source.chromium.org/chromium/chromium/src/+/main:base/memory/aligned_memory.cc;l=24-30;drc=e4622aaeccea84652488d1822c28c78b7115684f + return memalign(align, size); +#else + // The `align` from Rust is always a power of 2: + // https://doc.rust-lang.org/std/alloc/struct.Layout.html#method.from_size_align. + // + // We get here only if align > alignof(max_align_t), which guarantees that + // the alignment is both a power of 2 and even, which is required by + // posix_memalign(). + // + // The PartitionAlloc impl requires that the alignment is at least the same + // as pointer-alignment. std::max_align_t is at least pointer-aligned as + // well, so we satisfy that. + void* p; + auto ret = posix_memalign(&p, align, size); + return ret == 0 ? p : nullptr; +#endif + } } -void __attribute__((weak)) __rust_dealloc(void* a) { - __rdl_dealloc(a); +REMAP_ALLOC_ATTRIBUTES void __rust_dealloc(void* p, size_t size, size_t align) { + free(p); } -void* __attribute__((weak)) -__rust_realloc(void* a, size_t b, size_t c, size_t d) { - return __rdl_realloc(a, b, c, d); +REMAP_ALLOC_ATTRIBUTES void* __rust_realloc(void* p, + size_t old_size, + size_t align, + size_t new_size) { + if (align <= alignof(std::max_align_t)) { + return realloc(p, new_size); + } else { + void* out = __rust_alloc(align, new_size); + memcpy(out, p, std::min(old_size, new_size)); + return out; + } } -void* __attribute__((weak)) __rust_alloc_zeroed(size_t a, size_t b) { - return __rdl_alloc_zeroed(a, b); +REMAP_ALLOC_ATTRIBUTES void* __rust_alloc_zeroed(size_t size, size_t align) { + if (align <= alignof(std::max_align_t)) { + return calloc(size, 1); + } else { + void* p = __rust_alloc(size, align); + memset(p, 0, size); + return p; + } } -void __attribute__((weak)) __rust_alloc_error_handler(size_t a, size_t b) { +REMAP_ALLOC_ATTRIBUTES void __rust_alloc_error_handler(size_t size, + size_t align) { + NO_CODE_FOLDING(); IMMEDIATE_CRASH(); } -extern const unsigned char __attribute__((weak)) -__rust_alloc_error_handler_should_panic = 0; +REMAP_ALLOC_ATTRIBUTES extern const unsigned char + __rust_alloc_error_handler_should_panic = 0; } // extern "C" diff --git a/build/rust/std/rules/BUILD.gn b/build/rust/std/rules/BUILD.gn index 8bdb2ed..cda6a66 100644 --- a/build/rust/std/rules/BUILD.gn +++ b/build/rust/std/rules/BUILD.gn @@ -2,18 +2,25 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +# @generated from build/rust/std/BUILD.gn.hbs by tools/crates/gnrt. Do not edit! + import("//build/rust/cargo_crate.gni") cargo_crate("addr2line") { crate_type = "rlib" - crate_root = "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/addr2line-0.17.0/src/lib.rs" + crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/addr2line-0.19.0/src/lib.rs" + sources = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/addr2line-0.19.0/src/function.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/addr2line-0.19.0/src/lazy.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/addr2line-0.19.0/src/lib.rs", + ] + inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/addr2line-0.17.0/src/lib.rs" ] edition = "2015" - cargo_pkg_version = "0.17.0" + cargo_pkg_version = "0.19.0" cargo_pkg_name = "addr2line" cargo_pkg_description = "A cross-platform symbolication library written in Rust, using `gimli`" @@ -26,6 +33,8 @@ cargo_crate("addr2line") { ":gimli", ":rustc_std_workspace_alloc", ":rustc_std_workspace_core", + "//build/rust/std:profiler_builtins_group", + "//build/rust/std:std_build_deps", ] aliased_deps = { alloc = ":rustc_std_workspace_alloc__rlib" @@ -37,15 +46,29 @@ cargo_crate("addr2line") { "core", "rustc-dep-of-std", ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("adler") { crate_type = "rlib" - crate_root = "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/adler-1.0.2/src/lib.rs" + crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/adler-1.0.2/src/lib.rs" + sources = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/adler-1.0.2/src/algo.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/adler-1.0.2/src/lib.rs", + ] + inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/adler-1.0.2/src/lib.rs" ] edition = "2015" cargo_pkg_version = "1.0.2" cargo_pkg_authors = "Jonas Schievink " @@ -59,6 +82,8 @@ cargo_crate("adler") { deps = [ ":compiler_builtins", ":rustc_std_workspace_core", + "//build/rust/std:profiler_builtins_group", + "//build/rust/std:std_build_deps", ] aliased_deps = { core = ":rustc_std_workspace_core__rlib" @@ -68,15 +93,103 @@ cargo_crate("adler") { "core", "rustc-dep-of-std", ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("alloc") { crate_type = "rlib" crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/lib.rs" + sources = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/alloc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/alloc/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/borrow.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/boxed.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/boxed/thin.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/binary_heap/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/binary_heap/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/btree/append.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/btree/borrow.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/btree/borrow/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/btree/dedup_sorted_iter.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/btree/fix.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/btree/map.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/btree/map/entry.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/btree/map/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/btree/mem.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/btree/merge_iter.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/btree/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/btree/navigate.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/btree/node.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/btree/node/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/btree/remove.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/btree/search.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/btree/set.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/btree/set/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/btree/set_val.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/btree/split.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/linked_list.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/linked_list/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/vec_deque/drain.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/vec_deque/into_iter.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/vec_deque/iter.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/vec_deque/iter_mut.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/vec_deque/macros.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/vec_deque/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/vec_deque/spec_extend.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/vec_deque/spec_from_iter.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/collections/vec_deque/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/ffi/c_str.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/ffi/c_str/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/ffi/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/fmt.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/macros.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/raw_vec.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/raw_vec/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/rc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/rc/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/slice.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/slice/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/str.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/string.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/sync.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/sync/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/task.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/testing/crash_test.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/testing/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/testing/ord_chaos.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/testing/rng.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/vec/cow.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/vec/drain.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/vec/extract_if.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/vec/in_place_collect.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/vec/in_place_drop.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/vec/into_iter.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/vec/is_zero.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/vec/partial_eq.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/vec/set_len_on_drop.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/vec/spec_extend.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/vec/spec_from_elem.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/vec/spec_from_iter.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/vec/spec_from_iter_nested.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/vec/splice.rs", + ] + inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/alloc/src/lib.rs" ] edition = "2021" cargo_pkg_version = "0.0.0" cargo_pkg_name = "alloc" @@ -88,39 +201,34 @@ cargo_crate("alloc") { deps = [ ":compiler_builtins", ":core", + "//build/rust/std:profiler_builtins_group", + "//build/rust/std:std_build_deps", ] -} -cargo_crate("cc") { - crate_type = "rlib" - crate_root = "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/cc-1.0.78/src/lib.rs" - no_std = true - - # Unit tests skipped. Generate with --with-tests to include them. - build_native_rust_unit_tests = false - sources = [ "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/cc-1.0.78/src/lib.rs" ] - edition = "2018" - cargo_pkg_version = "1.0.78" - cargo_pkg_authors = "Alex Crichton " - cargo_pkg_name = "cc" - cargo_pkg_description = "A build-time dependency for Cargo build scripts to assist in invoking the nativeC compiler to compile native C code into a static archive to be linked into Rustcode." - library_configs -= [ "//build/config/compiler:chromium_code" ] - library_configs += [ "//build/config/compiler:no_chromium_code" ] - executable_configs -= [ "//build/config/compiler:chromium_code" ] - executable_configs += [ "//build/config/compiler:no_chromium_code" ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("cfg_if") { crate_type = "rlib" - crate_root = "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/cfg-if-1.0.0/src/lib.rs" + crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/cfg-if-1.0.0/src/lib.rs" + sources = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/cfg-if-1.0.0/src/lib.rs" ] + inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/cfg-if-1.0.0/src/lib.rs" ] edition = "2018" cargo_pkg_version = "1.0.0" cargo_pkg_authors = "Alex Crichton " cargo_pkg_name = "cfg-if" - cargo_pkg_description = "A macro to ergonomically define an item depending on a large number of #[cfg]parameters. Structured like an if-else chain, the first matching branch is theitem that gets emitted." + cargo_pkg_description = "A macro to ergonomically define an item depending on a large number of #[cfg] parameters. Structured like an if-else chain, the first matching branch is the item that gets emitted." library_configs -= [ "//build/config/compiler:chromium_code" ] library_configs += [ "//build/config/compiler:no_chromium_code" ] executable_configs -= [ "//build/config/compiler:chromium_code" ] @@ -128,6 +236,8 @@ cargo_crate("cfg_if") { deps = [ ":compiler_builtins", ":rustc_std_workspace_core", + "//build/rust/std:profiler_builtins_group", + "//build/rust/std:std_build_deps", ] aliased_deps = { core = ":rustc_std_workspace_core__rlib" @@ -137,25 +247,78 @@ cargo_crate("cfg_if") { "core", "rustc-dep-of-std", ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("compiler_builtins") { crate_type = "rlib" - crate_root = "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.85/src/lib.rs" + crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/lib.rs" + sources = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/arm.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/arm_linux.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/float/add.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/float/cmp.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/float/conv.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/float/div.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/float/extend.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/float/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/float/mul.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/float/pow.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/float/sub.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/float/trunc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/int/addsub.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/int/leading_zeros.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/int/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/int/mul.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/int/sdiv.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/int/shift.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/int/specialized_div_rem/asymmetric.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/int/specialized_div_rem/binary_long.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/int/specialized_div_rem/delegate.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/int/specialized_div_rem/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/int/specialized_div_rem/norm_shift.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/int/specialized_div_rem/trifecta.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/int/udiv.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/macros.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/math.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/mem/impls.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/mem/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/mem/x86_64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/probestack.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/riscv.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/x86.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/src/x86_64.rs", + ] + inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.85/src/lib.rs" ] edition = "2015" - cargo_pkg_version = "0.1.85" + cargo_pkg_version = "0.1.92" cargo_pkg_authors = "Jorge Aparicio " cargo_pkg_name = "compiler_builtins" - cargo_pkg_description = "Compiler intrinsics used by the Rust compiler. Also available for other targetsif necessary!" - library_configs -= [ "//build/config/compiler:chromium_code" ] + cargo_pkg_description = "Compiler intrinsics used by the Rust compiler. Also available for other targets if necessary!" + library_configs -= [ + "//build/config/compiler:chromium_code", + "//build/config/coverage:default_coverage", + ] library_configs += [ "//build/config/compiler:no_chromium_code" ] executable_configs -= [ "//build/config/compiler:chromium_code" ] executable_configs += [ "//build/config/compiler:no_chromium_code" ] - deps = [ ":rustc_std_workspace_core" ] + deps = [ + ":rustc_std_workspace_core", + "//build/rust/std:std_build_deps", + ] aliased_deps = { core = ":rustc_std_workspace_core__rlib" } @@ -163,35 +326,511 @@ cargo_crate("compiler_builtins") { "compiler-builtins", "core", "rustc-dep-of-std", + "weak-intrinsics", + ] + build_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/build.rs" + build_sources = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/compiler_builtins-0.1.92/build.rs" ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("core") { crate_type = "rlib" crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/lib.rs" + sources = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/alloc/global.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/alloc/layout.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/alloc/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/any.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/arch.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/array/ascii.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/array/drain.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/array/equality.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/array/iter.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/array/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ascii.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ascii/ascii_char.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/asserting.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/async_iter/async_iter.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/async_iter/from_iter.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/async_iter/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/bool.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/borrow.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/cell.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/cell/lazy.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/cell/once.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/char/convert.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/char/decode.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/char/methods.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/char/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/clone.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/cmp.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/cmp/bytewise.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/convert/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/convert/num.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/default.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/error.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/escape.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ffi/c_str.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ffi/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/fmt/builders.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/fmt/float.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/fmt/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/fmt/nofloat.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/fmt/num.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/fmt/rt.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/future/future.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/future/into_future.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/future/join.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/future/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/future/pending.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/future/poll_fn.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/future/ready.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/hash/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/hash/sip.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/hint.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/internal_macros.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/intrinsics.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/intrinsics/mir.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/array_chunks.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/by_ref_sized.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/chain.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/cloned.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/copied.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/cycle.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/enumerate.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/filter.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/filter_map.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/flatten.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/fuse.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/inspect.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/intersperse.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/map.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/map_while.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/peekable.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/rev.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/scan.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/skip.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/skip_while.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/step_by.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/take.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/take_while.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/adapters/zip.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/range.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/sources.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/sources/empty.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/sources/from_fn.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/sources/from_generator.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/sources/once.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/sources/once_with.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/sources/repeat.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/sources/repeat_n.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/sources/repeat_with.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/sources/successors.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/traits/accum.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/traits/collect.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/traits/double_ended.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/traits/exact_size.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/traits/marker.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/traits/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/iter/traits/unchecked_iterator.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/macros/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/marker.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/mem/manually_drop.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/mem/maybe_uninit.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/mem/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/mem/transmutability.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/net/display_buffer.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/net/ip_addr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/net/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/net/parser.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/net/socket_addr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/bignum.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/dec2flt/common.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/dec2flt/decimal.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/dec2flt/float.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/dec2flt/fpu.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/dec2flt/lemire.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/dec2flt/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/dec2flt/number.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/dec2flt/parse.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/dec2flt/slow.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/dec2flt/table.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/diy_float.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/error.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/f32.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/f64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/flt2dec/decoder.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/flt2dec/estimator.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/flt2dec/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/flt2dec/strategy/dragon.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/flt2dec/strategy/grisu.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/fmt.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/int_log10.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/int_macros.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/nonzero.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/saturating.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/shells/i128.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/shells/i16.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/shells/i32.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/shells/i64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/shells/i8.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/shells/int_macros.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/shells/isize.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/shells/u128.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/shells/u16.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/shells/u32.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/shells/u64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/shells/u8.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/shells/usize.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/uint_macros.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/num/wrapping.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ops/arith.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ops/bit.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ops/control_flow.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ops/deref.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ops/drop.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ops/function.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ops/generator.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ops/index.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ops/index_range.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ops/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ops/range.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ops/try_trait.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ops/unsize.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/option.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/panic.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/panic/location.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/panic/panic_info.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/panic/unwind_safe.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/panicking.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/pin.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/prelude/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/prelude/v1.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/primitive.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/primitive_docs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ptr/alignment.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ptr/const_ptr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ptr/metadata.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ptr/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ptr/mut_ptr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ptr/non_null.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ptr/unique.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/result.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/slice/ascii.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/slice/cmp.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/slice/index.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/slice/iter.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/slice/iter/macros.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/slice/memchr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/slice/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/slice/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/slice/rotate.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/slice/select.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/slice/sort.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/slice/specialize.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/str/converts.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/str/count.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/str/error.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/str/iter.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/str/lossy.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/str/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/str/pattern.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/str/traits.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/str/validations.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/sync/atomic.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/sync/exclusive.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/sync/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/task/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/task/poll.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/task/ready.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/task/wake.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/time.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/tuple.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/unicode/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/unicode/printable.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/unicode/unicode_data.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/unit.rs", + ] + inputs = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/examples/README.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/examples/dot_product.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/examples/matrix_inversion.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/examples/nbody.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/examples/spectral_norm.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/alias.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/cast.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/core_simd_docs.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/elements/const_ptr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/elements/float.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/elements/int.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/elements/mut_ptr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/elements/uint.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/elements.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/eq.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/fmt.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/intrinsics.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/iter.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/lane_count.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/masks/bitmask.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/masks/full_masks.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/masks/to_bitmask.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/masks.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/ops/assign.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/ops/deref.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/ops/unary.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/ops.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/ord.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/select.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/swizzle.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/swizzle_dyn.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/to_bytes.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/vector.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/vendor/arm.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/vendor/powerpc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/vendor/wasm32.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/vendor/x86.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/src/vendor.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/autoderef.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/cast.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/f32_ops.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/f64_ops.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/i16_ops.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/i32_ops.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/i64_ops.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/i8_ops.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/isize_ops.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/mask_ops.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/mask_ops_impl/mask16.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/mask_ops_impl/mask32.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/mask_ops_impl/mask64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/mask_ops_impl/mask8.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/mask_ops_impl/mask_macros.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/mask_ops_impl/masksize.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/mask_ops_impl/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/masks.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/ops_macros.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/pointers.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/round.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/swizzle.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/swizzle_dyn.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/to_bytes.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/try_from_slice.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/u16_ops.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/u32_ops.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/u64_ops.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/u8_ops.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../portable-simd/crates/core_simd/tests/usize_ops.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/MISSING.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/README.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/avx512bw.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/avx512f.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/aarch64/armclang.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/aarch64/crc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/aarch64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/aarch64/neon/generated.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/aarch64/neon/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/aarch64/prefetch.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/aarch64/test_support.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/aarch64/tme.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/aarch64/v8.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm/armclang.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm/dsp.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm/ex.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm/neon.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm/sat.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm/simd32.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm/v6.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm/v7.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm_shared/barrier/common.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm_shared/barrier/cp15.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm_shared/barrier/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm_shared/barrier/not_mclass.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm_shared/barrier/v8.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm_shared/crc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm_shared/crypto.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm_shared/hints.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm_shared/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm_shared/neon/generated.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm_shared/neon/load_tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm_shared/neon/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm_shared/neon/shift_and_insert_tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm_shared/neon/store_tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm_shared/neon/table_lookup_tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm_shared/registers/aarch32.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm_shared/registers/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm_shared/registers/v6m.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm_shared/registers/v7m.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/arm_shared/test_support.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/core_arch_docs.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/macros.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/mips/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/mips/msa.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/nvptx/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/powerpc/altivec.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/powerpc/macros.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/powerpc/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/powerpc/vsx.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/powerpc64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/riscv64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/riscv_shared/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/riscv_shared/p.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/simd.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/simd_llvm.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/v64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/wasm32/atomic.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/wasm32/memory.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/wasm32/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/wasm32/relaxed_simd.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/wasm32/simd128.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/abm.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/adx.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/aes.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/avx.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/avx2.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/avx512bf16.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/avx512bitalg.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/avx512bw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/avx512cd.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/avx512f.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/avx512ifma.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/avx512vbmi.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/avx512vbmi2.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/avx512vnni.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/avx512vpopcntdq.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/bmi1.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/bmi2.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/bswap.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/bt.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/cpuid.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/eflags.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/f16c.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/fma.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/fxsr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/gfni.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/macros.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/pclmulqdq.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/rdrand.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/rdtsc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/rtm.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/sha.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/sse.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/sse2.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/sse3.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/sse41.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/sse42.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/sse4a.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/ssse3.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/tbm.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/test.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/vaes.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/vpclmulqdq.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86/xsave.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86_64/abm.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86_64/adx.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86_64/avx.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86_64/avx2.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86_64/avx512f.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86_64/bmi.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86_64/bmi2.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86_64/bswap.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86_64/bt.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86_64/cmpxchg16b.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86_64/fxsr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86_64/macros.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86_64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86_64/rdrand.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86_64/sse.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86_64/sse2.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86_64/sse41.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86_64/sse42.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/x86_64/xsave.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../primitive_docs/box_into_raw.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../primitive_docs/fs_file.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../primitive_docs/io_bufread.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../primitive_docs/io_read.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../primitive_docs/io_seek.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../primitive_docs/io_write.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../primitive_docs/net_tosocketaddrs.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../primitive_docs/process_exit.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/../primitive_docs/string_string.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/error.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ffi/c_char.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ffi/c_double.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ffi/c_float.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ffi/c_int.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ffi/c_long.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ffi/c_longlong.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ffi/c_schar.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ffi/c_short.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ffi/c_uchar.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ffi/c_uint.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ffi/c_ulong.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ffi/c_ulonglong.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ffi/c_ushort.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/ffi/c_void.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/macros/panic.md", + ] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/lib.rs", - ] edition = "2021" cargo_pkg_version = "0.0.0" cargo_pkg_name = "core" cargo_pkg_description = "The Rust Core Library" - library_configs -= [ "//build/config/compiler:chromium_code" ] - library_configs += [ "//build/config/compiler:no_chromium_code" ] + library_configs -= [ + "//build/config/compiler:chromium_code", + "//build/config/coverage:default_coverage", + ] + library_configs += [ + "//build/config/compiler:no_chromium_code", + "//build/rust:panic_immediate_abort", + ] executable_configs -= [ "//build/config/compiler:chromium_code" ] executable_configs += [ "//build/config/compiler:no_chromium_code" ] + deps = [ "//build/rust/std:std_build_deps" ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("getopts") { crate_type = "rlib" - crate_root = "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/getopts-0.2.21/src/lib.rs" + crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/getopts-0.2.21/src/lib.rs" + sources = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/getopts-0.2.21/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/getopts-0.2.21/src/tests/mod.rs", + ] + inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/getopts-0.2.21/src/lib.rs" ] edition = "2015" cargo_pkg_version = "0.2.21" cargo_pkg_authors = "The Rust Project Developers" @@ -205,6 +844,8 @@ cargo_crate("getopts") { ":rustc_std_workspace_core", ":rustc_std_workspace_std", ":unicode_width", + "//build/rust/std:profiler_builtins_group", + "//build/rust/std:std_build_deps", ] aliased_deps = { core = ":rustc_std_workspace_core__rlib" @@ -215,17 +856,72 @@ cargo_crate("getopts") { "rustc-dep-of-std", "std", ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("gimli") { crate_type = "rlib" - crate_root = "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.26.2/src/lib.rs" + crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/lib.rs" + sources = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/arch.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/common.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/constants.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/endianity.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/leb128.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/read/abbrev.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/read/addr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/read/aranges.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/read/cfi.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/read/dwarf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/read/endian_reader.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/read/endian_slice.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/read/index.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/read/lazy.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/read/line.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/read/lists.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/read/loclists.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/read/lookup.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/read/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/read/op.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/read/pubnames.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/read/pubtypes.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/read/reader.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/read/rnglists.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/read/str.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/read/unit.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/read/util.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/read/value.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/test_util.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/write/abbrev.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/write/cfi.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/write/dwarf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/write/endian_vec.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/write/line.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/write/loc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/write/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/write/op.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/write/range.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/write/section.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/write/str.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/write/unit.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.27.2/src/write/writer.rs", + ] + inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/gimli-0.26.2/src/lib.rs" ] edition = "2018" - cargo_pkg_version = "0.26.2" + cargo_pkg_version = "0.27.2" cargo_pkg_name = "gimli" cargo_pkg_description = "A library for reading and writing the DWARF debugging format." @@ -237,6 +933,8 @@ cargo_crate("gimli") { ":compiler_builtins", ":rustc_std_workspace_alloc", ":rustc_std_workspace_core", + "//build/rust/std:profiler_builtins_group", + "//build/rust/std:std_build_deps", ] aliased_deps = { alloc = ":rustc_std_workspace_alloc__rlib" @@ -250,17 +948,51 @@ cargo_crate("gimli") { "read-core", "rustc-dep-of-std", ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("hashbrown") { crate_type = "rlib" - crate_root = "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.12.3/src/lib.rs" + crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.14.0/src/lib.rs" + sources = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.14.0/src/external_trait_impls/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.14.0/src/external_trait_impls/rayon/helpers.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.14.0/src/external_trait_impls/rayon/map.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.14.0/src/external_trait_impls/rayon/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.14.0/src/external_trait_impls/rayon/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.14.0/src/external_trait_impls/rayon/set.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.14.0/src/external_trait_impls/rkyv/hash_map.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.14.0/src/external_trait_impls/rkyv/hash_set.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.14.0/src/external_trait_impls/rkyv/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.14.0/src/external_trait_impls/serde.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.14.0/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.14.0/src/macros.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.14.0/src/map.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.14.0/src/raw/alloc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.14.0/src/raw/bitmask.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.14.0/src/raw/generic.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.14.0/src/raw/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.14.0/src/raw/neon.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.14.0/src/raw/sse2.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.14.0/src/rustc_entry.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.14.0/src/scopeguard.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.14.0/src/set.rs", + ] + inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/hashbrown-0.12.3/src/lib.rs" ] edition = "2021" - cargo_pkg_version = "0.12.3" + cargo_pkg_version = "0.14.0" cargo_pkg_authors = "Amanieu d'Antras " cargo_pkg_name = "hashbrown" cargo_pkg_description = "A Rust port of Google's SwissTable hash map" @@ -272,6 +1004,8 @@ cargo_crate("hashbrown") { ":compiler_builtins", ":rustc_std_workspace_alloc", ":rustc_std_workspace_core", + "//build/rust/std:profiler_builtins_group", + "//build/rust/std:std_build_deps", ] aliased_deps = { alloc = ":rustc_std_workspace_alloc__rlib" @@ -285,44 +1019,330 @@ cargo_crate("hashbrown") { "rustc-dep-of-std", "rustc-internal-api", ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("libc") { crate_type = "rlib" - crate_root = "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.139/src/lib.rs" + crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/lib.rs" + sources = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/fixed_width_ints.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/fuchsia/aarch64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/fuchsia/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/fuchsia/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/fuchsia/no_align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/fuchsia/riscv64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/fuchsia/x86_64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/hermit/aarch64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/hermit/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/hermit/x86_64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/macros.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/psp.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/sgx.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/solid/aarch64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/solid/arm.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/solid/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/switch.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/aix/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/aix/powerpc64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/apple/b32/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/apple/b32/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/apple/b64/aarch64/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/apple/b64/aarch64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/apple/b64/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/apple/b64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/apple/b64/x86_64/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/apple/b64/x86_64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/apple/long_array.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/apple/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/freebsdlike/dragonfly/errno.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/freebsdlike/dragonfly/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/freebsdlike/freebsd/aarch64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/freebsdlike/freebsd/arm.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/freebsdlike/freebsd/freebsd12/x86_64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/freebsdlike/freebsd/freebsd13/x86_64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/freebsdlike/freebsd/freebsd14/x86_64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/freebsdlike/freebsd/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/freebsdlike/freebsd/powerpc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/freebsdlike/freebsd/powerpc64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/freebsdlike/freebsd/riscv64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/freebsdlike/freebsd/x86.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/freebsdlike/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/netbsdlike/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/netbsdlike/netbsd/aarch64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/netbsdlike/netbsd/arm.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/netbsdlike/netbsd/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/netbsdlike/netbsd/powerpc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/netbsdlike/netbsd/sparc64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/netbsdlike/netbsd/x86.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/netbsdlike/netbsd/x86_64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/netbsdlike/openbsd/aarch64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/netbsdlike/openbsd/arm.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/netbsdlike/openbsd/mips64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/netbsdlike/openbsd/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/netbsdlike/openbsd/powerpc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/netbsdlike/openbsd/powerpc64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/netbsdlike/openbsd/riscv64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/netbsdlike/openbsd/sparc64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/netbsdlike/openbsd/x86.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/bsd/netbsdlike/openbsd/x86_64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/haiku/b32.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/haiku/b64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/haiku/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/haiku/native.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/haiku/x86_64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/hermit/aarch64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/hermit/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/hermit/x86_64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/android/b32/arm.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/android/b32/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/android/b32/x86/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/android/b32/x86/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/android/b64/aarch64/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/android/b64/aarch64/int128.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/android/b64/aarch64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/android/b64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/android/b64/riscv64/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/android/b64/riscv64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/android/b64/x86_64/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/android/b64/x86_64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/android/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/emscripten/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/emscripten/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/emscripten/no_align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/arch/generic/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/arch/mips/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/arch/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/arch/powerpc/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/arch/sparc/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b32/arm/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b32/arm/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b32/m68k/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b32/mips/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b32/mips/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b32/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b32/powerpc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b32/riscv32/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b32/sparc/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b32/x86/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b32/x86/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b64/aarch64/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b64/aarch64/int128.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b64/loongarch64/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b64/mips64/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b64/riscv64/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b64/s390x.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b64/sparc64/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b64/x86_64/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/gnu/no_align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/b32/arm/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/b32/arm/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/b32/hexagon.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/b32/mips/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/b32/mips/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/b32/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/b32/powerpc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/b32/riscv32/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/b32/x86/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/b32/x86/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/b64/aarch64/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/b64/aarch64/int128.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/b64/mips64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/b64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/b64/powerpc64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/b64/riscv64/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/b64/s390x.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/b64/x86_64/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/lfs64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/musl/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/no_align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/non_exhaustive.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/uclibc/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/uclibc/arm/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/uclibc/arm/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/uclibc/arm/no_align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/uclibc/mips/mips32/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/uclibc/mips/mips64/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/uclibc/mips/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/uclibc/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/uclibc/no_align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/uclibc/x86_64/l4re.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/uclibc/x86_64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/linux/uclibc/x86_64/other.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/linux_like/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/newlib/aarch64/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/newlib/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/newlib/arm/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/newlib/espidf/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/newlib/generic.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/newlib/horizon/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/newlib/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/newlib/no_align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/newlib/powerpc/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/newlib/vita/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/no_align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/nto/aarch64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/nto/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/nto/neutrino.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/nto/x86_64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/redox/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/solarish/compat.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/solarish/illumos.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/solarish/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/solarish/solaris.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/solarish/x86.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/solarish/x86_64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/unix/solarish/x86_common.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/vxworks/aarch64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/vxworks/arm.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/vxworks/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/vxworks/powerpc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/vxworks/powerpc64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/vxworks/x86.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/vxworks/x86_64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/wasi.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/windows/gnu/align.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/windows/gnu/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/windows/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/windows/msvc/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/src/xous.rs", + ] + inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.139/src/lib.rs" ] edition = "2015" - cargo_pkg_version = "0.2.139" + cargo_pkg_version = "0.2.146" cargo_pkg_authors = "The Rust Project Developers" cargo_pkg_name = "libc" cargo_pkg_description = "Raw FFI bindings to platform libraries like libc." - library_configs -= [ "//build/config/compiler:chromium_code" ] + library_configs -= [ + "//build/config/compiler:chromium_code", + "//build/config/coverage:default_coverage", + ] library_configs += [ "//build/config/compiler:no_chromium_code" ] executable_configs -= [ "//build/config/compiler:chromium_code" ] executable_configs += [ "//build/config/compiler:no_chromium_code" ] - deps = [ ":rustc_std_workspace_core" ] + deps = [ + ":rustc_std_workspace_core", + "//build/rust/std:std_build_deps", + ] features = [ "align", "rustc-dep-of-std", "rustc-std-workspace-core", ] + build_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/build.rs" + build_sources = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/libc-0.2.146/build.rs" ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] rustflags = [ - "--cfg=libc_align", - "--cfg=libc_priv_mod_use", - "--cfg=libc_core_cvoid", + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + "-Zlink-directives=false", ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("memchr") { crate_type = "rlib" - crate_root = "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/lib.rs" + crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/lib.rs" + sources = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/cow.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memchr/c.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memchr/fallback.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memchr/iter.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memchr/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memchr/naive.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memchr/x86/avx.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memchr/x86/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memchr/x86/sse2.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memchr/x86/sse42.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memmem/byte_frequencies.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memmem/genericsimd.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memmem/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memmem/prefilter/fallback.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memmem/prefilter/genericsimd.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memmem/prefilter/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memmem/prefilter/wasm.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memmem/prefilter/x86/avx.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memmem/prefilter/x86/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memmem/prefilter/x86/sse.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memmem/rabinkarp.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memmem/rarebytes.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memmem/twoway.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memmem/util.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memmem/vector.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memmem/wasm.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memmem/x86/avx.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memmem/x86/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/memmem/x86/sse.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/tests/memchr/iter.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/tests/memchr/memchr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/tests/memchr/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/tests/memchr/simple.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/tests/memchr/testdata.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/tests/mod.rs", + ] + inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/src/lib.rs" ] edition = "2018" cargo_pkg_version = "2.5.0" cargo_pkg_authors = "Andrew Gallant , bluss" @@ -335,6 +1355,8 @@ cargo_crate("memchr") { deps = [ ":compiler_builtins", ":rustc_std_workspace_core", + "//build/rust/std:profiler_builtins_group", + "//build/rust/std:std_build_deps", ] aliased_deps = { core = ":rustc_std_workspace_core__rlib" @@ -344,17 +1366,41 @@ cargo_crate("memchr") { "core", "rustc-dep-of-std", ] + build_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/build.rs" + build_sources = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/memchr-2.5.0/build.rs" ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("miniz_oxide") { crate_type = "rlib" - crate_root = "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/miniz_oxide-0.5.3/src/lib.rs" + crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/miniz_oxide-0.6.2/src/lib.rs" + sources = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/miniz_oxide-0.6.2/src/deflate/buffer.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/miniz_oxide-0.6.2/src/deflate/core.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/miniz_oxide-0.6.2/src/deflate/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/miniz_oxide-0.6.2/src/deflate/stream.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/miniz_oxide-0.6.2/src/inflate/core.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/miniz_oxide-0.6.2/src/inflate/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/miniz_oxide-0.6.2/src/inflate/output_buffer.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/miniz_oxide-0.6.2/src/inflate/stream.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/miniz_oxide-0.6.2/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/miniz_oxide-0.6.2/src/shared.rs", + ] + inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/miniz_oxide-0.5.3/src/lib.rs" ] edition = "2018" - cargo_pkg_version = "0.5.3" + cargo_pkg_version = "0.6.2" cargo_pkg_authors = "Frommi , oyvindln " cargo_pkg_name = "miniz_oxide" cargo_pkg_description = "DEFLATE compression and decompression library rewritten in Rust based on miniz" @@ -367,6 +1413,8 @@ cargo_crate("miniz_oxide") { ":compiler_builtins", ":rustc_std_workspace_alloc", ":rustc_std_workspace_core", + "//build/rust/std:profiler_builtins_group", + "//build/rust/std:std_build_deps", ] aliased_deps = { alloc = ":rustc_std_workspace_alloc__rlib" @@ -378,17 +1426,98 @@ cargo_crate("miniz_oxide") { "core", "rustc-dep-of-std", ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("object") { crate_type = "rlib" - crate_root = "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.29.0/src/lib.rs" + crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/lib.rs" + sources = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/archive.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/common.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/elf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/endian.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/macho.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/pe.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/pod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/any.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/archive.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/coff/comdat.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/coff/file.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/coff/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/coff/relocation.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/coff/section.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/coff/symbol.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/elf/comdat.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/elf/compression.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/elf/dynamic.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/elf/file.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/elf/hash.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/elf/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/elf/note.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/elf/relocation.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/elf/section.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/elf/segment.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/elf/symbol.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/elf/version.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/macho/dyld_cache.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/macho/fat.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/macho/file.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/macho/load_command.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/macho/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/macho/relocation.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/macho/section.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/macho/segment.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/macho/symbol.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/pe/data_directory.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/pe/export.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/pe/file.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/pe/import.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/pe/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/pe/relocation.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/pe/resource.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/pe/rich.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/pe/section.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/read_cache.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/read_ref.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/traits.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/util.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/wasm.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/xcoff/comdat.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/xcoff/file.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/xcoff/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/xcoff/relocation.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/xcoff/section.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/xcoff/segment.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/read/xcoff/symbol.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/write/coff.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/write/elf/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/write/elf/object.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/write/elf/writer.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/write/macho.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/write/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/write/pe.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/write/string.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/write/util.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.30.1/src/xcoff.rs", + ] + inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/object-0.29.0/src/lib.rs" ] edition = "2018" - cargo_pkg_version = "0.29.0" + cargo_pkg_version = "0.30.1" cargo_pkg_name = "object" cargo_pkg_description = "A unified interface for reading and writing object file formats." @@ -401,6 +1530,8 @@ cargo_crate("object") { ":memchr", ":rustc_std_workspace_alloc", ":rustc_std_workspace_core", + "//build/rust/std:profiler_builtins_group", + "//build/rust/std:std_build_deps", ] aliased_deps = { alloc = ":rustc_std_workspace_alloc__rlib" @@ -419,15 +1550,29 @@ cargo_crate("object") { "rustc-dep-of-std", "unaligned", ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("panic_abort") { crate_type = "rlib" crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/panic_abort/src/lib.rs" + sources = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/panic_abort/src/android.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/panic_abort/src/lib.rs", + ] + inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/panic_abort/src/lib.rs" ] edition = "2021" cargo_pkg_version = "0.0.0" cargo_pkg_name = "panic_abort" @@ -442,16 +1587,37 @@ cargo_crate("panic_abort") { ":compiler_builtins", ":core", ":libc", + "//build/rust/std:profiler_builtins_group", + "//build/rust/std:std_build_deps", + ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("panic_unwind") { crate_type = "rlib" crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/panic_unwind/src/lib.rs" + sources = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/panic_unwind/src/dummy.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/panic_unwind/src/emcc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/panic_unwind/src/gcc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/panic_unwind/src/hermit.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/panic_unwind/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/panic_unwind/src/miri.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/panic_unwind/src/seh.rs", + ] + inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/panic_unwind/src/lib.rs" ] edition = "2021" cargo_pkg_version = "0.0.0" cargo_pkg_name = "panic_unwind" @@ -467,16 +1633,45 @@ cargo_crate("panic_unwind") { ":core", ":libc", ":unwind", + "//build/rust/std:profiler_builtins_group", + "//build/rust/std:std_build_deps", ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("proc_macro") { crate_type = "rlib" crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/proc_macro/src/lib.rs" + sources = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/proc_macro/src/bridge/arena.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/proc_macro/src/bridge/buffer.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/proc_macro/src/bridge/client.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/proc_macro/src/bridge/closure.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/proc_macro/src/bridge/fxhash.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/proc_macro/src/bridge/handle.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/proc_macro/src/bridge/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/proc_macro/src/bridge/rpc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/proc_macro/src/bridge/scoped_cell.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/proc_macro/src/bridge/selfless_reify.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/proc_macro/src/bridge/server.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/proc_macro/src/bridge/symbol.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/proc_macro/src/diagnostic.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/proc_macro/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/proc_macro/src/quote.rs", + ] + inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/proc_macro/src/lib.rs" ] edition = "2021" cargo_pkg_version = "0.0.0" cargo_pkg_name = "proc_macro" @@ -487,37 +1682,68 @@ cargo_crate("proc_macro") { deps = [ ":core", ":std", + "//build/rust/std:profiler_builtins_group", + "//build/rust/std:std_build_deps", + ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("profiler_builtins") { crate_type = "rlib" crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/profiler_builtins/src/lib.rs" + sources = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/profiler_builtins/src/lib.rs" ] + inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/profiler_builtins/src/lib.rs" ] edition = "2021" cargo_pkg_version = "0.0.0" cargo_pkg_name = "profiler_builtins" - library_configs -= [ "//build/config/compiler:chromium_code" ] + library_configs -= [ + "//build/config/compiler:chromium_code", + "//build/config/coverage:default_coverage", + ] library_configs += [ "//build/config/compiler:no_chromium_code" ] executable_configs -= [ "//build/config/compiler:chromium_code" ] executable_configs += [ "//build/config/compiler:no_chromium_code" ] deps = [ ":compiler_builtins", ":core", + "//build/rust/std:std_build_deps", ] - build_deps = [ ":cc" ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("rustc_demangle") { crate_type = "rlib" - crate_root = "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/rustc-demangle-0.1.21/src/lib.rs" + crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/rustc-demangle-0.1.21/src/lib.rs" + sources = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/rustc-demangle-0.1.21/src/legacy.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/rustc-demangle-0.1.21/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/rustc-demangle-0.1.21/src/v0.rs", + ] + inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/rustc-demangle-0.1.21/src/lib.rs" ] edition = "2015" cargo_pkg_version = "0.1.21" cargo_pkg_authors = "Alex Crichton " @@ -530,6 +1756,8 @@ cargo_crate("rustc_demangle") { deps = [ ":compiler_builtins", ":rustc_std_workspace_core", + "//build/rust/std:profiler_builtins_group", + "//build/rust/std:std_build_deps", ] aliased_deps = { core = ":rustc_std_workspace_core__rlib" @@ -539,51 +1767,96 @@ cargo_crate("rustc_demangle") { "core", "rustc-dep-of-std", ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("rustc_std_workspace_alloc") { crate_type = "rlib" crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/rustc-std-workspace-alloc/lib.rs" + sources = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/rustc-std-workspace-alloc/lib.rs" ] + inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/rustc-std-workspace-alloc/lib.rs" ] edition = "2021" cargo_pkg_version = "1.99.0" cargo_pkg_name = "rustc-std-workspace-alloc" cargo_pkg_description = "Hack for the compiler's own build system" - library_configs -= [ "//build/config/compiler:chromium_code" ] + library_configs -= [ + "//build/config/compiler:chromium_code", + "//build/config/coverage:default_coverage", + ] library_configs += [ "//build/config/compiler:no_chromium_code" ] executable_configs -= [ "//build/config/compiler:chromium_code" ] executable_configs += [ "//build/config/compiler:no_chromium_code" ] - deps = [ ":alloc" ] + deps = [ + ":alloc", + "//build/rust/std:std_build_deps", + ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("rustc_std_workspace_core") { crate_type = "rlib" crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/rustc-std-workspace-core/lib.rs" + sources = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/rustc-std-workspace-core/lib.rs" ] + inputs = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/rustc-std-workspace-core/README.md" ] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/rustc-std-workspace-core/lib.rs" ] edition = "2021" cargo_pkg_version = "1.99.0" cargo_pkg_name = "rustc-std-workspace-core" cargo_pkg_description = "Hack for the compiler's own build system" - library_configs -= [ "//build/config/compiler:chromium_code" ] + library_configs -= [ + "//build/config/compiler:chromium_code", + "//build/config/coverage:default_coverage", + ] library_configs += [ "//build/config/compiler:no_chromium_code" ] executable_configs -= [ "//build/config/compiler:chromium_code" ] executable_configs += [ "//build/config/compiler:no_chromium_code" ] - deps = [ ":core" ] + deps = [ + ":core", + "//build/rust/std:std_build_deps", + ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("rustc_std_workspace_std") { crate_type = "rlib" crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/rustc-std-workspace-std/lib.rs" + sources = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/rustc-std-workspace-std/lib.rs" ] + inputs = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/rustc-std-workspace-std/README.md" ] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/rustc-std-workspace-std/lib.rs" ] edition = "2021" cargo_pkg_version = "1.99.0" cargo_pkg_name = "rustc-std-workspace-std" @@ -592,25 +1865,591 @@ cargo_crate("rustc_std_workspace_std") { library_configs += [ "//build/config/compiler:no_chromium_code" ] executable_configs -= [ "//build/config/compiler:chromium_code" ] executable_configs += [ "//build/config/compiler:no_chromium_code" ] - deps = [ ":std" ] + deps = [ + ":std", + "//build/rust/std:profiler_builtins_group", + "//build/rust/std:std_build_deps", + ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("std") { crate_type = "rlib" crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/lib.rs" + sources = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/alloc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/ascii.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/backtrace.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/backtrace/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/collections/hash/map.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/collections/hash/map/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/collections/hash/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/collections/hash/set.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/collections/hash/set/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/collections/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/env.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/env/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/error.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/error/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/f32.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/f32/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/f64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/f64/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/ffi/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/ffi/os_str.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/ffi/os_str/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/fs/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/buffered/bufreader.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/buffered/bufreader/buffer.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/buffered/bufwriter.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/buffered/linewriter.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/buffered/linewritershim.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/buffered/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/buffered/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/copy.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/copy/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/cursor.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/cursor/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/error.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/error/repr_bitpacked.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/error/repr_unpacked.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/error/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/impls.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/impls/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/prelude.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/readbuf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/readbuf/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/stdio.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/stdio/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/util.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/io/util/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/keyword_docs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/macros.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/net/ip_addr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/net/ip_addr/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/net/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/net/socket_addr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/net/socket_addr/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/net/tcp.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/net/tcp/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/net/test.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/net/udp.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/net/udp/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/num.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/num/benches.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/num/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/android/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/android/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/android/net.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/android/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/dragonfly/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/dragonfly/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/dragonfly/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/emscripten/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/emscripten/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/emscripten/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/espidf/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/espidf/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/espidf/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/fd/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/fd/net.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/fd/owned.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/fd/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/fd/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/fortanix_sgx/arch.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/fortanix_sgx/ffi.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/fortanix_sgx/io.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/fortanix_sgx/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/freebsd/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/freebsd/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/freebsd/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/fuchsia/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/fuchsia/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/fuchsia/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/haiku/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/haiku/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/haiku/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/hermit/ffi.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/hermit/io/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/hermit/io/net.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/hermit/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/horizon/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/horizon/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/horizon/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/illumos/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/illumos/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/illumos/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/ios/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/ios/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/ios/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/l4re/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/l4re/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/l4re/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/linux/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/linux/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/linux/net.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/linux/process.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/linux/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/macos/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/macos/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/macos/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/net/linux_ext/addr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/net/linux_ext/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/net/linux_ext/tcp.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/net/linux_ext/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/net/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/netbsd/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/netbsd/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/netbsd/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/nto/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/nto/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/nto/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/openbsd/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/openbsd/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/openbsd/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/raw/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/raw/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/redox/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/redox/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/redox/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/solaris/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/solaris/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/solaris/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/solid/ffi.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/solid/io.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/solid/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/unix/ffi/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/unix/ffi/os_str.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/unix/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/unix/fs/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/unix/io/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/unix/io/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/unix/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/unix/net/addr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/unix/net/ancillary.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/unix/net/datagram.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/unix/net/listener.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/unix/net/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/unix/net/stream.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/unix/net/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/unix/process.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/unix/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/unix/thread.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/unix/ucred.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/unix/ucred/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/vita/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/vita/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/vita/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/vxworks/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/vxworks/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/vxworks/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/wasi/ffi.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/wasi/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/wasi/io/fd.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/wasi/io/fd/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/wasi/io/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/wasi/io/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/wasi/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/wasi/net/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/watchos/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/watchos/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/watchos/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/windows/ffi.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/windows/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/windows/io/handle.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/windows/io/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/windows/io/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/windows/io/socket.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/windows/io/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/windows/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/windows/process.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/windows/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/os/windows/thread.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/panic.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/panic/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/panicking.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/path.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/path/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/personality.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/personality/dwarf/eh.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/personality/dwarf/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/personality/dwarf/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/personality/emcc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/personality/gcc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/prelude/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/prelude/v1.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/primitive_docs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/process.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/process/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/rt.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/barrier.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/barrier/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/condvar.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/condvar/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/lazy_lock.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/lazy_lock/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/mpmc/array.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/mpmc/context.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/mpmc/counter.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/mpmc/error.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/mpmc/list.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/mpmc/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/mpmc/select.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/mpmc/utils.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/mpmc/waker.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/mpmc/zero.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/mpsc/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/mpsc/sync_tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/mpsc/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/mutex.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/mutex/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/once.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/once/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/once_lock.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/once_lock/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/poison.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/remutex.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/remutex/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/rwlock.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/rwlock/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/common/alloc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/common/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/common/small_c_string.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/common/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/common/thread_local/fast_local.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/common/thread_local/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/common/thread_local/os_local.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/common/thread_local/static_local.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/hermit/alloc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/hermit/args.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/hermit/env.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/hermit/fd.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/hermit/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/hermit/futex.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/hermit/memchr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/hermit/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/hermit/net.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/hermit/os.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/hermit/stdio.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/hermit/thread.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/hermit/thread_local_dtor.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/hermit/time.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/itron/abi.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/itron/condvar.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/itron/error.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/itron/mutex.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/itron/spin.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/itron/task.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/itron/thread.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/itron/thread_parking.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/itron/time.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/itron/time/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/abi/mem.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/abi/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/abi/panic.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/abi/reloc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/abi/thread.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/abi/tls/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/abi/tls/sync_bitset.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/abi/tls/sync_bitset/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/abi/usercalls/alloc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/abi/usercalls/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/abi/usercalls/raw.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/abi/usercalls/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/alloc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/args.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/condvar.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/env.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/fd.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/memchr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/mutex.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/net.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/os.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/path.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/rwlock.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/rwlock/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/stdio.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/thread.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/thread_local_key.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/thread_parking.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/time.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/waitqueue/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/waitqueue/spin_mutex.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/waitqueue/spin_mutex/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/waitqueue/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/waitqueue/unsafe_list.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/sgx/waitqueue/unsafe_list/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/solid/abi/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/solid/abi/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/solid/abi/sockets.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/solid/alloc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/solid/env.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/solid/error.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/solid/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/solid/io.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/solid/memchr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/solid/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/solid/net.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/solid/os.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/solid/path.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/solid/rwlock.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/solid/stdio.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/solid/thread_local_dtor.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/solid/thread_local_key.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/solid/time.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/alloc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/android.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/args.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/cmath.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/env.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/fd.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/fd/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/futex.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/io.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/kernel_copy.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/kernel_copy/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/l4re.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/locks/fuchsia_mutex.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/locks/futex_condvar.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/locks/futex_mutex.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/locks/futex_rwlock.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/locks/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/locks/pthread_condvar.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/locks/pthread_mutex.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/locks/pthread_rwlock.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/memchr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/net.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/os.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/os/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/os_str.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/os_str/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/path.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/pipe.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/process/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/process/process_common.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/process/process_common/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/process/process_fuchsia.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/process/process_unix.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/process/process_unix/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/process/process_unsupported.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/process/process_vxworks.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/process/zircon.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/rand.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/stack_overflow.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/stdio.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/thread.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/thread_local_dtor.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/thread_local_key.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/thread_parking/darwin.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/thread_parking/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/thread_parking/netbsd.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/thread_parking/pthread.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/time.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unix/weak.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unsupported/alloc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unsupported/args.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unsupported/common.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unsupported/env.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unsupported/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unsupported/io.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unsupported/locks/condvar.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unsupported/locks/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unsupported/locks/mutex.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unsupported/locks/rwlock.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unsupported/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unsupported/net.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unsupported/once.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unsupported/os.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unsupported/pipe.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unsupported/process.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unsupported/stdio.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unsupported/thread.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unsupported/thread_local_dtor.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unsupported/thread_local_key.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unsupported/thread_parking.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/unsupported/time.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/wasi/args.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/wasi/env.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/wasi/fd.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/wasi/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/wasi/io.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/wasi/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/wasi/net.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/wasi/os.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/wasi/stdio.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/wasi/thread.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/wasi/time.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/wasm/alloc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/wasm/atomics/futex.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/wasm/atomics/thread.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/wasm/env.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/wasm/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/alloc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/alloc/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/args.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/args/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/c.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/c/windows_sys.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/cmath.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/compat.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/env.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/handle.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/handle/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/io.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/locks/condvar.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/locks/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/locks/mutex.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/locks/rwlock.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/memchr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/net.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/os.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/os/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/os_str.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/path.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/path/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/pipe.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/process.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/process/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/rand.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/stack_overflow.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/stack_overflow_uwp.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/stdio.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/stdio/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/thread.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/thread_local_dtor.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/thread_local_key.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/thread_local_key/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/thread_parking.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/windows/time.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/backtrace.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/fs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/io.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/lazy_box.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/memchr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/memchr/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/net.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/net/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/once/futex.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/once/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/once/queue.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/process.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/thread.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/thread_info.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/thread_local_dtor.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/thread_local_key.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/thread_local_key/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/thread_parking/futex.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/thread_parking/id.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/thread_parking/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/wstr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/wtf8.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys_common/wtf8/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/thread/local.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/thread/local/dynamic_tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/thread/local/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/thread/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/thread/scoped.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/thread/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/time.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/time/tests.rs", + ] + inputs = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/backtrace/dbghelp.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/backtrace/libunwind.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/backtrace/miri.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/backtrace/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/backtrace/noop.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/capture.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/dbghelp.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/print/fuchsia.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/print.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/dbghelp.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/gimli/coff.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/gimli/elf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/gimli/libs_dl_iterate_phdr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/gimli/libs_haiku.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/gimli/libs_illumos.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/gimli/libs_libnx.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/gimli/libs_macos.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/gimli/libs_windows.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/gimli/macho.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/gimli/mmap_fake.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/gimli/mmap_unix.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/gimli/mmap_windows.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/gimli/parse_running_mmaps_unix.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/gimli/stash.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/gimli.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/miri.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/noop.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/types.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/windows.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../core/src/error.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../core/src/ffi/c_char.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../core/src/ffi/c_double.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../core/src/ffi/c_float.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../core/src/ffi/c_int.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../core/src/ffi/c_long.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../core/src/ffi/c_longlong.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../core/src/ffi/c_schar.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../core/src/ffi/c_short.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../core/src/ffi/c_uchar.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../core/src/ffi/c_uint.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../core/src/ffi/c_ulong.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../core/src/ffi/c_ulonglong.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../core/src/ffi/c_ushort.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../core/src/ffi/c_void.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../core/src/macros/panic.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../portable-simd/crates/core_simd/src/core_simd_docs.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../portable-simd/crates/std_float/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../stdarch/crates/core_arch/src/core_arch_docs.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../primitive_docs/box_into_raw.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../primitive_docs/fs_file.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../primitive_docs/io_bufread.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../primitive_docs/io_read.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../primitive_docs/io_seek.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../primitive_docs/io_write.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../primitive_docs/net_tosocketaddrs.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../primitive_docs/process_exit.md", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../primitive_docs/string_string.md", + ] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/lib.rs", - ] edition = "2021" cargo_pkg_version = "0.0.0" cargo_pkg_name = "std" cargo_pkg_description = "The Rust Standard Library" library_configs -= [ "//build/config/compiler:chromium_code" ] - library_configs += [ "//build/config/compiler:no_chromium_code" ] + library_configs += [ + "//build/config/compiler:no_chromium_code", + "//build/rust:panic_immediate_abort", + ] executable_configs -= [ "//build/config/compiler:chromium_code" ] executable_configs += [ "//build/config/compiler:no_chromium_code" ] deps = [ @@ -625,10 +2464,11 @@ cargo_crate("std") { ":object", ":panic_abort", ":panic_unwind", - ":profiler_builtins", ":rustc_demangle", ":std_detect", ":unwind", + "//build/rust/std:profiler_builtins_group", + "//build/rust/std:std_build_deps", ] features = [ "addr2line", @@ -642,17 +2482,64 @@ cargo_crate("std") { "std_detect_dlsym_getauxval", "std_detect_file_io", ] - rustflags = [ "--cfg=backtrace_in_libstd" ] - rustenv = [ "STD_ENV_ARCH=$rust_target_arch" ] + build_root = + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/build.rs" + build_sources = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/build.rs", + ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("std_detect") { crate_type = "rlib" crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/lib.rs" + sources = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/arch/aarch64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/arch/arm.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/arch/mips.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/arch/mips64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/arch/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/arch/powerpc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/arch/powerpc64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/arch/riscv.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/arch/x86.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/bit.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/cache.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/macros.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/os/aarch64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/os/freebsd/aarch64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/os/freebsd/arm.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/os/freebsd/auxvec.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/os/freebsd/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/os/freebsd/powerpc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/os/linux/aarch64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/os/linux/arm.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/os/linux/auxvec.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/os/linux/cpuinfo.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/os/linux/mips.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/os/linux/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/os/linux/powerpc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/os/linux/riscv.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/os/openbsd/aarch64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/os/other.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/os/windows/aarch64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/detect/os/x86.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/lib.rs", + ] + inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/stdarch/crates/std_detect/src/lib.rs" ] edition = "2021" cargo_pkg_version = "0.1.5" cargo_pkg_authors = "Alex Crichton , Andrew Gallant , Gonzalo Brito Gadeschi " @@ -669,6 +2556,8 @@ cargo_crate("std_detect") { ":libc", ":rustc_std_workspace_alloc", ":rustc_std_workspace_core", + "//build/rust/std:profiler_builtins_group", + "//build/rust/std:std_build_deps", ] aliased_deps = { alloc = ":rustc_std_workspace_alloc__rlib" @@ -683,17 +2572,58 @@ cargo_crate("std_detect") { "std_detect_dlsym_getauxval", "std_detect_file_io", ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("test") { crate_type = "rlib" crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/lib.rs" + sources = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/bench.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/cli.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/console.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/event.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/formatters/json.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/formatters/junit.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/formatters/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/formatters/pretty.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/formatters/terse.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/helpers/concurrency.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/helpers/exit_code.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/helpers/metrics.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/helpers/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/helpers/shuffle.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/options.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/stats.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/stats/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/term.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/term/terminfo/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/term/terminfo/parm.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/term/terminfo/parm/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/term/terminfo/parser/compiled.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/term/terminfo/parser/compiled/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/term/terminfo/searcher.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/term/terminfo/searcher/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/term/win.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/test_result.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/time.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/types.rs", + ] + inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/test/src/lib.rs", - ] edition = "2021" cargo_pkg_version = "0.0.0" cargo_pkg_name = "test" @@ -702,32 +2632,44 @@ cargo_crate("test") { executable_configs -= [ "//build/config/compiler:chromium_code" ] executable_configs += [ "//build/config/compiler:no_chromium_code" ] deps = [ - ":cfg_if", ":core", ":getopts", - ":libc", ":panic_abort", ":panic_unwind", - ":proc_macro", ":std", + "//build/rust/std:profiler_builtins_group", + "//build/rust/std:std_build_deps", ] - - rustenv = [ "CFG_DISABLE_UNSTABLE_FEATURES=0" ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("unicode_width") { crate_type = "rlib" - crate_root = "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/unicode-width-0.1.10/src/lib.rs" + crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/unicode-width-0.1.10/src/lib.rs" + sources = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/unicode-width-0.1.10/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/unicode-width-0.1.10/src/tables.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/vendor/unicode-width-0.1.10/src/tests.rs", + ] + inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ "//build/rust/std/fake_root/../../../../third_party/rust-toolchain/lib/rustlib/src/rust/vendor/unicode-width-0.1.10/src/lib.rs" ] edition = "2015" cargo_pkg_version = "0.1.10" cargo_pkg_authors = "kwantam , Manish Goregaokar " cargo_pkg_name = "unicode-width" - cargo_pkg_description = "Determine displayed width of `char` and `str` typesaccording to Unicode Standard Annex #11 rules." + cargo_pkg_description = "Determine displayed width of `char` and `str` types according to Unicode Standard Annex #11 rules." library_configs -= [ "//build/config/compiler:chromium_code" ] library_configs += [ "//build/config/compiler:no_chromium_code" ] executable_configs -= [ "//build/config/compiler:chromium_code" ] @@ -736,6 +2678,8 @@ cargo_crate("unicode_width") { ":compiler_builtins", ":rustc_std_workspace_core", ":rustc_std_workspace_std", + "//build/rust/std:profiler_builtins_group", + "//build/rust/std:std_build_deps", ] aliased_deps = { core = ":rustc_std_workspace_core__rlib" @@ -747,15 +2691,29 @@ cargo_crate("unicode_width") { "rustc-dep-of-std", "std", ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } cargo_crate("unwind") { crate_type = "rlib" crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/unwind/src/lib.rs" + sources = [ + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/unwind/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/unwind/src/libunwind.rs", + ] + inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - sources = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/unwind/src/lib.rs" ] edition = "2021" cargo_pkg_version = "0.0.0" cargo_pkg_name = "unwind" @@ -768,6 +2726,18 @@ cargo_crate("unwind") { ":compiler_builtins", ":core", ":libc", + "//build/rust/std:profiler_builtins_group", + "//build/rust/std:std_build_deps", + ] + rustenv = [ + "CFG_DISABLE_UNSTABLE_FEATURES=0", + "STD_ENV_ARCH=$rust_target_arch", + ] + rustflags = [ + "--cfg=backtrace_in_libstd", + "-Zforce-unstable-if-unmarked", + "-Zlink-directives=false", ] - build_deps = [ ":cc" ] + output_dir = + "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } diff --git a/build/rust/tests/BUILD.gn b/build/rust/tests/BUILD.gn index ba5d50a..ff61553 100644 --- a/build/rust/tests/BUILD.gn +++ b/build/rust/tests/BUILD.gn @@ -5,14 +5,6 @@ import("//build/config/rust.gni") import("//build/rust/rust_unit_tests_group.gni") -if (toolchain_has_rust) { - target_has_exe = !is_android - - # TODO(crbug.com/1278030): Dylib linking on Android fails due to trying to - # link the unwinder from `-lgcc`. - target_has_dylib = !is_android -} - # Build some minimal binaries to exercise the Rust toolchain # only if that toolchain is enabled in gn args. group("tests") { @@ -31,12 +23,22 @@ group("deps") { # All the rest require Rust. if (toolchain_has_rust) { deps += [ + "bindgen_test", "test_aliased_deps", + "test_aliased_deps:test_aliased_deps_exe", + "test_bin_crate", "test_cpp_including_rust", "test_rlib_crate:target1", "test_rlib_crate:target2", + "test_rlib_crate:test_rlib_crate_associated_bin", + "test_rust_calling_cpp", + "test_rust_exe", + "test_rust_metadata:test_rust_metadata_cc_exe", + "test_rust_metadata:test_rust_metadata_exe", + "test_rust_multiple_dep_versions_exe", "test_rust_static_library", "test_serde_json_lenient", + "test_simple_rust_exe", # TODO(https://crbug.com/1329611): Enable the additional target below # once `rs_bindings_from_cc` is distributed via `gclient sync`. In the @@ -44,21 +46,6 @@ group("deps") { # `//build/rust/run_rs_bindings_from_cc.py`. #"test_rs_bindings_from_cc:test_rs_bindings_from_cc", ] - if (target_has_exe) { - deps += [ - "bindgen_test", - "test_aliased_deps:test_aliased_deps_exe", - "test_bin_crate", - "test_rlib_crate:test_rlib_crate_associated_bin", - "test_rust_exe", - "test_rust_multiple_dep_versions_exe", - "test_simple_rust_exe", - "//third_party/rust/bindgen/v0_60:bindgen", - ] - } - if (target_has_dylib) { - deps += [ "test_rust_shared_library" ] - } if (can_build_rust_unit_tests) { deps += [ "bindgen_test:bindgen_test_lib_unittests", @@ -67,6 +54,7 @@ group("deps") { "test_rlib_crate:target1_test_rlib_crate_v0_2_unittests", "test_rlib_crate:target2_test_rlib_crate_v0_2_unittests", "test_rust_exe:test_rust_exe_unittests", + "test_rust_metadata:test_rust_metadata_unittests", "test_rust_multiple_dep_versions_exe/v1:test_lib_v1_unittests", "test_rust_multiple_dep_versions_exe/v2:test_lib_v2_unittests", "test_rust_static_library:test_rust_static_library_unittests", @@ -79,27 +67,30 @@ group("deps") { # `//build/rust/run_rs_bindings_from_cc.py`. #"test_rs_bindings_from_cc:test_rs_bindings_from_cc_unittests", ] - - # TODO(crbug.com/1297592): The bot isolate does not end up including any - # .so files so the tests fail: - # - # error while loading shared libraries: libtest_rust_shared_library.so: - # cannot open shared object file: No such file or directory - if (false) { - deps += - [ "test_rust_shared_library:test_rust_shared_library_unittests" ] - } } - if (local_libstd_supported) { - deps += [ "test_local_std" ] - if (target_has_exe) { - deps += [ "test_local_std:test_local_std_exe" ] - } + # Dylibs should only be built in component builds. We turn on flags which + # are incompatible with shared library compilation in non-component builds + # (such as code coverage https://crbug.com/1457533). + if (is_component_build) { + deps += [ "test_rust_shared_library" ] if (can_build_rust_unit_tests) { - deps += [ "test_local_std:test_local_std_unittests" ] + deps += [ + "test_cpp_including_rust:test_cpp_including_rust_dylib_unittests", + ] + + # TODO(crbug.com/1442273): The shared library unittest EXE ends up + # requiring the DLL to run, even though it does not use the DLL. + if (!is_win && !is_mac) { + deps += + [ "test_rust_shared_library:test_rust_shared_library_unittests" ] + } } } + + if (is_win) { + deps += [ "test_control_flow_guard" ] + } } } diff --git a/build/rust/tests/bindgen_test/BUILD.gn b/build/rust/tests/bindgen_test/BUILD.gn index ce158e9..c0c3d9b 100644 --- a/build/rust/tests/bindgen_test/BUILD.gn +++ b/build/rust/tests/bindgen_test/BUILD.gn @@ -27,6 +27,7 @@ rust_bindgen("c_lib_bindgen") { } rust_static_library("bindgen_test_lib") { + allow_unsafe = true deps = [ ":c_lib", ":c_lib_bindgen", @@ -37,7 +38,8 @@ rust_static_library("bindgen_test_lib") { bindgen_output = get_target_outputs(":c_lib_bindgen") inputs = bindgen_output - rustenv = [ "BINDGEN_RS_FILE=" + rebase_path(bindgen_output[0]) ] + rustenv = [ "BINDGEN_RS_FILE=" + + rebase_path(bindgen_output[0], get_path_info(crate_root, "dir")) ] } rust_executable("bindgen_test") { diff --git a/build/rust/tests/bindgen_test/src/lib.rs b/build/rust/tests/bindgen_test/src/lib.rs index dfd231d..c8672e0 100644 --- a/build/rust/tests/bindgen_test/src/lib.rs +++ b/build/rust/tests/bindgen_test/src/lib.rs @@ -4,6 +4,7 @@ mod c_ffi { #![allow(dead_code)] + #![allow(non_snake_case)] #![allow(non_camel_case_types)] #![allow(non_upper_case_globals)] include!(env!("BINDGEN_RS_FILE")); diff --git a/build/rust/tests/test_bin_crate/BUILD.gn b/build/rust/tests/test_bin_crate/BUILD.gn index ac47ee0..835029c 100644 --- a/build/rust/tests/test_bin_crate/BUILD.gn +++ b/build/rust/tests/test_bin_crate/BUILD.gn @@ -7,7 +7,10 @@ import("//build/rust/cargo_crate.gni") cargo_crate("test_bin_crate") { crate_type = "bin" crate_root = "crate/src/main.rs" - sources = [ "crate/src/main.rs" ] + sources = [ + "crate/src/main.rs", + "crate/src/more.rs", + ] build_sources = [ "crate/build.rs" ] build_root = "crate/build.rs" diff --git a/build/rust/tests/test_bin_crate/crate/src/main.rs b/build/rust/tests/test_bin_crate/crate/src/main.rs index 08fff49..71ec000 100644 --- a/build/rust/tests/test_bin_crate/crate/src/main.rs +++ b/build/rust/tests/test_bin_crate/crate/src/main.rs @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +mod more; + fn main() { println!("Hello, world!"); #[cfg(is_new_rustc)] @@ -12,4 +14,6 @@ fn main() { println!("Is android!"); #[cfg(is_mac)] println!("Is darwin!"); + + more::hello(); } diff --git a/build/rust/tests/test_local_std/main.rs b/build/rust/tests/test_bin_crate/crate/src/more.rs similarity index 77% rename from build/rust/tests/test_local_std/main.rs rename to build/rust/tests/test_bin_crate/crate/src/more.rs index 746e021..3b60842 100644 --- a/build/rust/tests/test_local_std/main.rs +++ b/build/rust/tests/test_bin_crate/crate/src/more.rs @@ -2,6 +2,4 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -fn main() { - println!("hello world"); -} +pub fn hello() {} diff --git a/build/rust/tests/test_control_flow_guard/BUILD.gn b/build/rust/tests/test_control_flow_guard/BUILD.gn new file mode 100644 index 0000000..202c5b0 --- /dev/null +++ b/build/rust/tests/test_control_flow_guard/BUILD.gn @@ -0,0 +1,14 @@ +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/rust/rust_executable.gni") + +rust_executable("test_control_flow_guard") { + allow_unsafe = true + crate_root = "test_control_flow_guard.rs" + sources = [ crate_root ] + + # Used as a data dep by base_unittests. + is_data_dep = true +} diff --git a/build/rust/tests/test_control_flow_guard/test_control_flow_guard.rs b/build/rust/tests/test_control_flow_guard/test_control_flow_guard.rs new file mode 100644 index 0000000..d303d3d --- /dev/null +++ b/build/rust/tests/test_control_flow_guard/test_control_flow_guard.rs @@ -0,0 +1,43 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +//! To test that CFG is working, build this executable on Windows and run it +//! as: +//! +//! `out\Release\cdb\cdb.exe -G -g -o .\out\Release\test_control_flow_guard.exe` +//! +//! Which should print: +//! ``` +//! (a2d4.bcd8): Security check failure or stack buffer overrun - code c0000409 +//! (!!! second chance !!!) +//! Subcode: 0xa FAST_FAIL_GUARD_ICALL_CHECK_FAILURE +//! ``` +//! +//! If cdb.exe is not present, first run `ninja -C out\Release cdb\cdb.exe`. + +use std::arch::asm; + +#[cfg(any(target_arch = "x86", target_arch = "x86_64"))] +const NOP_INSTRUCTION_SIZE: usize = 1; +#[cfg(target_arch = "aarch64")] +const NOP_INSTRUCTION_SIZE: usize = 4; + +#[inline(never)] +fn nop_sled() { + unsafe { asm!("nop", "nop", "ret",) } +} + +#[inline(never)] +fn indirect_call(func: fn()) { + func(); +} + +fn main() { + let fptr = + unsafe { std::mem::transmute::(nop_sled as usize + NOP_INSTRUCTION_SIZE) }; + // Generates a FAST_FAIL_GUARD_ICALL_CHECK_FAILURE if CFG triggers. + indirect_call(fptr); + // Should only reach here if CFG is disabled. + eprintln!("failed"); +} diff --git a/build/rust/tests/test_cpp_including_rust/BUILD.gn b/build/rust/tests/test_cpp_including_rust/BUILD.gn index 2157b79..3e974fc 100644 --- a/build/rust/tests/test_cpp_including_rust/BUILD.gn +++ b/build/rust/tests/test_cpp_including_rust/BUILD.gn @@ -11,7 +11,7 @@ executable("test_cpp_including_rust") { } test("test_cpp_including_rust_unittests") { - sources = [ "unittests.cc" ] + sources = [ "static_unittests.cc" ] deps = [ "//base", "//base/allocator:buildflags", @@ -21,3 +21,17 @@ test("test_cpp_including_rust_unittests") { "//testing/gtest", ] } + +if (is_component_build) { + test("test_cpp_including_rust_dylib_unittests") { + sources = [ "shared_unittests.cc" ] + deps = [ + "//base", + "//base/allocator:buildflags", + "//base/test:run_all_unittests", + "//build/rust/tests/test_rust_shared_library", + "//testing/gmock", + "//testing/gtest", + ] + } +} diff --git a/build/rust/tests/test_cpp_including_rust/shared_unittests.cc b/build/rust/tests/test_cpp_including_rust/shared_unittests.cc new file mode 100644 index 0000000..b207196 --- /dev/null +++ b/build/rust/tests/test_cpp_including_rust/shared_unittests.cc @@ -0,0 +1,31 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include + +#include + +#include "base/allocator/buildflags.h" +#include "base/allocator/partition_allocator/address_pool_manager_bitmap.h" +#include "base/allocator/partition_allocator/partition_address_space.h" +#include "build/build_config.h" +#include "build/buildflag.h" +#include "testing/gtest/include/gtest/gtest.h" + +#include "build/rust/tests/test_rust_shared_library/src/lib.rs.h" + +TEST(RustSharedTest, CppCallingIntoRust_BasicFFI) { + EXPECT_EQ(7, add_two_ints_via_rust(3, 4)); +} + +TEST(RustSharedTest, RustComponentUsesPartitionAlloc) { + // Verify that PartitionAlloc is consistently used in C++ and Rust. + auto cpp_allocated_int = std::make_unique(); + SomeStruct* rust_allocated_ptr = allocate_via_rust().into_raw(); + EXPECT_EQ(partition_alloc::IsManagedByPartitionAlloc( + reinterpret_cast(rust_allocated_ptr)), + partition_alloc::IsManagedByPartitionAlloc( + reinterpret_cast(cpp_allocated_int.get()))); + rust::Box::from_raw(rust_allocated_ptr); +} diff --git a/build/rust/tests/test_cpp_including_rust/unittests.cc b/build/rust/tests/test_cpp_including_rust/static_unittests.cc similarity index 87% rename from build/rust/tests/test_cpp_including_rust/unittests.cc rename to build/rust/tests/test_cpp_including_rust/static_unittests.cc index f3b65ad..77efd8d 100644 --- a/build/rust/tests/test_cpp_including_rust/unittests.cc +++ b/build/rust/tests/test_cpp_including_rust/static_unittests.cc @@ -1,4 +1,4 @@ -// Copyright 2021 The Chromium Authors +// Copyright 2023 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -15,11 +15,11 @@ #include "build/rust/tests/test_rust_static_library/src/lib.rs.h" -TEST(RustTest, CppCallingIntoRust_BasicFFI) { +TEST(RustStaticTest, CppCallingIntoRust_BasicFFI) { EXPECT_EQ(7, add_two_ints_via_rust(3, 4)); } -TEST(RustTest, RustComponentUsesPartitionAlloc) { +TEST(RustStaticTest, RustComponentUsesPartitionAlloc) { // Verify that PartitionAlloc is consistently used in C++ and Rust. auto cpp_allocated_int = std::make_unique(); SomeStruct* rust_allocated_ptr = allocate_via_rust().into_raw(); diff --git a/build/rust/tests/test_local_std/BUILD.gn b/build/rust/tests/test_local_std/BUILD.gn deleted file mode 100644 index 6d364c6..0000000 --- a/build/rust/tests/test_local_std/BUILD.gn +++ /dev/null @@ -1,34 +0,0 @@ -# Copyright 2023 The Chromium Authors -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//build/config/rust.gni") -import("//build/rust/rust_executable.gni") -import("//build/rust/rust_static_library.gni") - -assert(local_libstd_supported) - -rust_static_library("test_local_std") { - sources = [ "lib.rs" ] - crate_root = "lib.rs" - build_native_rust_unit_tests = true - - # Override the normal stdlib. - # - # TODO(crbug.com/1368806): add a better switch for using the prebuilt std vs - # locally built std. - no_std = true - deps = [ "//build/rust/std:local_std_for_rustc" ] -} - -rust_executable("test_local_std_exe") { - sources = [ "main.rs" ] - crate_root = "main.rs" - deps = [ ":test_local_std" ] - - # Override the normal stdlib. - # - # TODO(crbug.com/1368806): add a better switch for using the prebuilt std vs - # locally built std. - no_std = true -} diff --git a/build/rust/tests/test_rust_calling_cpp/BUILD.gn b/build/rust/tests/test_rust_calling_cpp/BUILD.gn new file mode 100644 index 0000000..9fdfcd4 --- /dev/null +++ b/build/rust/tests/test_rust_calling_cpp/BUILD.gn @@ -0,0 +1,21 @@ +import("//build/rust/rust_static_library.gni") + +static_library("cpp_library") { + sources = [ + "cpp_library.cc", + "cpp_library.h", + ] +} + +rust_static_library("rust_calling_cpp_rlib") { + sources = [ "rust_calling_cpp_rlib.rs" ] + crate_root = "rust_calling_cpp_rlib.rs" + cxx_bindings = [ "rust_calling_cpp_rlib.rs" ] + allow_unsafe = true + deps = [ ":cpp_library" ] +} + +executable("test_rust_calling_cpp") { + deps = [ ":rust_calling_cpp_rlib" ] + sources = [ "main.cc" ] +} diff --git a/build/rust/tests/test_rust_calling_cpp/cpp_library.cc b/build/rust/tests/test_rust_calling_cpp/cpp_library.cc new file mode 100644 index 0000000..cb0a39c --- /dev/null +++ b/build/rust/tests/test_rust_calling_cpp/cpp_library.cc @@ -0,0 +1,9 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "build/rust/tests/test_rust_calling_cpp/cpp_library.h" + +int32_t mul_by_2_in_cpp_library(int32_t a) { + return a * 2; +} diff --git a/build/rust/tests/test_rust_calling_cpp/cpp_library.h b/build/rust/tests/test_rust_calling_cpp/cpp_library.h new file mode 100644 index 0000000..b1dcf21 --- /dev/null +++ b/build/rust/tests/test_rust_calling_cpp/cpp_library.h @@ -0,0 +1,12 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef BUILD_RUST_TESTS_TEST_RUST_CALLING_CPP_CPP_LIBRARY_H_ +#define BUILD_RUST_TESTS_TEST_RUST_CALLING_CPP_CPP_LIBRARY_H_ + +#include + +int32_t mul_by_2_in_cpp_library(int32_t a); + +#endif // BUILD_RUST_TESTS_TEST_RUST_CALLING_CPP_CPP_LIBRARY_H_ diff --git a/build/rust/tests/test_rust_calling_cpp/main.cc b/build/rust/tests/test_rust_calling_cpp/main.cc new file mode 100644 index 0000000..92402a2 --- /dev/null +++ b/build/rust/tests/test_rust_calling_cpp/main.cc @@ -0,0 +1,10 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "build/rust/tests/test_rust_calling_cpp/rust_calling_cpp_rlib.rs.h" + +int main() { + rust_calling_cpp(); + return 0; +} diff --git a/build/rust/tests/test_rust_calling_cpp/rust_calling_cpp_rlib.rs b/build/rust/tests/test_rust_calling_cpp/rust_calling_cpp_rlib.rs new file mode 100644 index 0000000..9a3bd17 --- /dev/null +++ b/build/rust/tests/test_rust_calling_cpp/rust_calling_cpp_rlib.rs @@ -0,0 +1,22 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#[allow(unsafe_op_in_unsafe_fn)] +#[cxx::bridge] +mod ffi { + extern "Rust" { + fn rust_calling_cpp(); + } + + unsafe extern "C++" { + include!("build/rust/tests/test_rust_calling_cpp/cpp_library.h"); + + fn mul_by_2_in_cpp_library(a: i32) -> i32; + } +} + +#[no_mangle] +pub fn rust_calling_cpp() { + assert_eq!(ffi::mul_by_2_in_cpp_library(3), 6); +} diff --git a/build/rust/tests/test_rust_metadata/BUILD.gn b/build/rust/tests/test_rust_metadata/BUILD.gn new file mode 100644 index 0000000..95171aa --- /dev/null +++ b/build/rust/tests/test_rust_metadata/BUILD.gn @@ -0,0 +1,81 @@ +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/config/rust.gni") +import("//build/rust/rust_executable.gni") +import("//build/rust/rust_static_library.gni") +import("//build/rust/rust_unit_test.gni") + +# This target depends on two variants of the same crate: one directly, and one +# transitively. With correct metadata handling, this will work. +rust_static_library("test_rust_metadata_lib") { + crate_name = "lib" + crate_root = "lib.rs" + sources = [ "lib.rs" ] + deps = [ + ":foo_dependency", + ":transitive_dep_2", + ] + + # Depending on the other variant directly will fail, as expected. rustc + # gives + # + # error[E0464]: multiple candidates for `rlib` dependency `transitive_dep` + # found + # + # deps += [":transitive_dep_1"] + + # We also test this in a C++ binary, so we want a #[no_mangle] fn. This is + # considered unsafe. + allow_unsafe = true +} + +if (can_build_rust_unit_tests) { + # Tests that the different variants return the expected strings. + rust_unit_test("test_rust_metadata_unittests") { + crate_root = "tests.rs" + sources = [ "tests.rs" ] + deps = [ ":test_rust_metadata_lib" ] + } +} + +rust_executable("test_rust_metadata_exe") { + crate_root = "main.rs" + sources = [ "main.rs" ] + deps = [ ":test_rust_metadata_lib" ] +} + +# Check that the metadata handling works when linking into a C++ binary too. +executable("test_rust_metadata_cc_exe") { + sources = [ "main.cc" ] + deps = [ ":test_rust_metadata_lib" ] +} + +# A source file whose behavior depends on cfg options. +rust_static_library("transitive_dep_1") { + crate_name = "transitive_dep" + crate_root = "transitive_dep.rs" + sources = [ "transitive_dep.rs" ] + + rustc_metadata = "foo" +} + +# Build the same source again, but with a feature enabled. The metadata should +# disambiguate the symbols when linking. +rust_static_library("transitive_dep_2") { + crate_name = "transitive_dep" + crate_root = "transitive_dep.rs" + sources = [ "transitive_dep.rs" ] + + rustc_metadata = "bar" + features = [ "bar_feature" ] +} + +# Include one version transitively, since otherwise the names in Rust will +# conflict. +rust_static_library("foo_dependency") { + crate_root = "foo_dependency.rs" + sources = [ "foo_dependency.rs" ] + deps = [ ":transitive_dep_1" ] +} diff --git a/build/rust/tests/test_rust_metadata/foo_dependency.rs b/build/rust/tests/test_rust_metadata/foo_dependency.rs new file mode 100644 index 0000000..9ac78b9 --- /dev/null +++ b/build/rust/tests/test_rust_metadata/foo_dependency.rs @@ -0,0 +1,10 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Reexporting the function should also work fine. +pub use transitive_dep::say_something as say_foo_directly; + +pub fn say_foo() -> String { + transitive_dep::say_something() +} diff --git a/build/rust/tests/test_rust_metadata/lib.rs b/build/rust/tests/test_rust_metadata/lib.rs new file mode 100644 index 0000000..4081c4d --- /dev/null +++ b/build/rust/tests/test_rust_metadata/lib.rs @@ -0,0 +1,22 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// The explicit `extern crate` will catch if a GN target specifies conflicting +// dependencies. +// +// When libraries are included implicitly from the command line, rustc seems to +// silently pick the first one that matches. On the other hand with an explicit +// "extern crate" directive, which tells rustc to link a dependency no matter +// what, rustc will see the conflict. +extern crate transitive_dep; + +pub use foo_dependency::say_foo; +pub use foo_dependency::say_foo_directly; +pub use transitive_dep::say_something; + +#[no_mangle] +pub extern "C" fn print_foo_bar() { + println!("{}", foo_dependency::say_foo()); + println!("{}", transitive_dep::say_something()); +} diff --git a/build/rust/tests/test_local_std/lib.rs b/build/rust/tests/test_rust_metadata/main.cc similarity index 68% rename from build/rust/tests/test_local_std/lib.rs rename to build/rust/tests/test_rust_metadata/main.cc index 6328cf4..911dc87 100644 --- a/build/rust/tests/test_local_std/lib.rs +++ b/build/rust/tests/test_rust_metadata/main.cc @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#[test] -fn test_test() { - assert_eq!(1, 1); +extern "C" void print_foo_bar(); + +int main() { + print_foo_bar(); } diff --git a/build/rust/tests/test_rust_metadata/main.rs b/build/rust/tests/test_rust_metadata/main.rs new file mode 100644 index 0000000..a0d3866 --- /dev/null +++ b/build/rust/tests/test_rust_metadata/main.rs @@ -0,0 +1,8 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +fn main() { + lib::print_foo_bar(); + println!("{} from re-exported function", lib::say_foo_directly()); +} diff --git a/build/rust/tests/test_rust_metadata/tests.rs b/build/rust/tests/test_rust_metadata/tests.rs new file mode 100644 index 0000000..2652ce0 --- /dev/null +++ b/build/rust/tests/test_rust_metadata/tests.rs @@ -0,0 +1,10 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#[test] +fn test_expected_outputs() { + assert_eq!(lib::say_foo(), "foo"); + assert_eq!(lib::say_foo_directly(), "foo"); + assert_eq!(lib::say_something(), "bar"); +} diff --git a/build/rust/tests/test_rust_metadata/transitive_dep.rs b/build/rust/tests/test_rust_metadata/transitive_dep.rs new file mode 100644 index 0000000..b00ec10 --- /dev/null +++ b/build/rust/tests/test_rust_metadata/transitive_dep.rs @@ -0,0 +1,14 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +pub fn say_something() -> String { + #[cfg(feature = "bar_feature")] + { + "bar".to_string() + } + #[cfg(not(feature = "bar_feature"))] + { + "foo".to_string() + } +} diff --git a/build/rust/tests/test_rust_shared_library/BUILD.gn b/build/rust/tests/test_rust_shared_library/BUILD.gn index 550011e..f2396c7 100644 --- a/build/rust/tests/test_rust_shared_library/BUILD.gn +++ b/build/rust/tests/test_rust_shared_library/BUILD.gn @@ -5,6 +5,7 @@ import("//build/rust/rust_shared_library.gni") rust_shared_library("test_rust_shared_library") { + allow_unsafe = true sources = [ "src/lib.rs" ] cxx_bindings = [ "src/lib.rs" ] build_native_rust_unit_tests = true diff --git a/build/rust/tests/test_rust_shared_library/src/lib.rs b/build/rust/tests/test_rust_shared_library/src/lib.rs index 54788b6..2fa77c3 100644 --- a/build/rust/tests/test_rust_shared_library/src/lib.rs +++ b/build/rust/tests/test_rust_shared_library/src/lib.rs @@ -2,6 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// Requires this allow since cxx generates unsafe code. +// +// TODO(crbug.com/1422745): patch upstream cxx to generate compatible code. +#[allow(unsafe_op_in_unsafe_fn)] #[cxx::bridge] mod ffi { pub struct SomeStruct { @@ -30,8 +34,8 @@ pub fn add_two_ints_via_rust(x: i32, y: i32) -> i32 { x + y } -// The next function is used from the -// AllocatorTest.RustComponentUsesPartitionAlloc unit test. +// The next function is used from the RustComponentUsesPartitionAlloc unit +// tests. pub fn allocate_via_rust() -> Box { Box::new(ffi::SomeStruct { a: 43 }) } diff --git a/build/rust/tests/test_rust_static_library/BUILD.gn b/build/rust/tests/test_rust_static_library/BUILD.gn index 39ccbb4..28a48cb 100644 --- a/build/rust/tests/test_rust_static_library/BUILD.gn +++ b/build/rust/tests/test_rust_static_library/BUILD.gn @@ -5,6 +5,7 @@ import("//build/rust/rust_static_library.gni") rust_static_library("test_rust_static_library") { + allow_unsafe = true sources = [ "src/lib.rs" ] cxx_bindings = [ "src/lib.rs" ] build_native_rust_unit_tests = true diff --git a/build/rust/tests/test_rust_static_library/src/lib.rs b/build/rust/tests/test_rust_static_library/src/lib.rs index 9fd9fe7..1fcabe3 100644 --- a/build/rust/tests/test_rust_static_library/src/lib.rs +++ b/build/rust/tests/test_rust_static_library/src/lib.rs @@ -2,6 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// Requires this allow since cxx generates unsafe code. +// +// TODO(crbug.com/1422745): patch upstream cxx to generate compatible code. +#[allow(unsafe_op_in_unsafe_fn)] #[cxx::bridge] mod ffi { pub struct SomeStruct { diff --git a/build/rust/tests/test_serde_json_lenient/BUILD.gn b/build/rust/tests/test_serde_json_lenient/BUILD.gn index 0f0da7a..dbc954e 100644 --- a/build/rust/tests/test_serde_json_lenient/BUILD.gn +++ b/build/rust/tests/test_serde_json_lenient/BUILD.gn @@ -7,6 +7,7 @@ import("//testing/test.gni") rust_static_library("test_serde_json_lenient_rs") { crate_root = "lib.rs" + allow_unsafe = true sources = [ "lib.rs" ] cxx_bindings = [ "lib.rs" ] deps = [ "//third_party/rust/serde_json_lenient/v0_1:lib" ] diff --git a/build/rust/tests/test_simple_rust_exe/BUILD.gn b/build/rust/tests/test_simple_rust_exe/BUILD.gn index 3248f29..9f6ee20 100644 --- a/build/rust/tests/test_simple_rust_exe/BUILD.gn +++ b/build/rust/tests/test_simple_rust_exe/BUILD.gn @@ -8,5 +8,6 @@ # //build/rust/rust_executable.gni. executable("test_simple_rust_exe") { crate_root = "main.rs" - deps = [ "//build/rust/std:prebuilt_std_for_rustc" ] + sources = [ crate_root ] + deps = [ "//build/rust/std:stdlib_for_rustc" ] } diff --git a/build/sanitizers/asan_suppressions.cc b/build/sanitizers/asan_suppressions.cc index 9fbcd8f..32027dd 100644 --- a/build/sanitizers/asan_suppressions.cc +++ b/build/sanitizers/asan_suppressions.cc @@ -15,6 +15,10 @@ // // http://crbug.com/178677 // "interceptor_via_lib:libsqlite3.so\n" char kASanDefaultSuppressions[] = + // https://crbug.com/1471542 false positive odr violations from Rust code. + "odr_violation:^core::\n" + "odr_violation:^object::\n" + "odr_violation:^std::panicking::\n" // End of suppressions. // PLEASE READ ABOVE BEFORE ADDING NEW SUPPRESSIONS. diff --git a/build/sanitizers/lsan_suppressions.cc b/build/sanitizers/lsan_suppressions.cc index 05459c0..5589208 100644 --- a/build/sanitizers/lsan_suppressions.cc +++ b/build/sanitizers/lsan_suppressions.cc @@ -23,6 +23,7 @@ char kLSanDefaultSuppressions[] = // False positives in libfontconfig. http://crbug.com/39050 "leak:libfontconfig\n" + "leak:libthird_party_fontconfig\n" // eglibc-2.19/string/strdup.c creates false positive leak errors because of // the same reason as crbug.com/39050. The leak error stack trace, when // unwind on malloc, includes a call to libfontconfig. But the default stack @@ -30,7 +31,7 @@ char kLSanDefaultSuppressions[] = // suppression works. http://crbug.com/605286 "leak:__strdup\n" - // Leaks in Nvidia's GL and Vulkan drivers. + // Leaks in GL and Vulkan drivers and system libraries on Linux NVIDIA "leak:libGL.so\n" "leak:libGLX_nvidia.so\n" "leak:libnvidia-cbl.so\n" @@ -39,6 +40,7 @@ char kLSanDefaultSuppressions[] = "leak:libnvidia-rtcore.so\n" "leak:nvidia0\n" "leak:nvidiactl\n" + "leak:libdbus-1.so\n" // XRandR has several one time leaks. "leak:libxrandr\n" @@ -62,6 +64,9 @@ char kLSanDefaultSuppressions[] = // Suppress leaks from unknown third party modules. http://anglebug.com/6937 "leak:\n" + // Suppress leaks from temporary files. http://crbug.com/1433299 + "leak:(deleted)\n" + // ================ Leaks in Chromium code ================ // PLEASE DO NOT ADD SUPPRESSIONS FOR NEW LEAKS. // Instead, commits that introduce memory leaks should be reverted. @@ -69,9 +74,6 @@ char kLSanDefaultSuppressions[] = // impossible, i.e. when enabling leak detection for the first time for a // test target with pre-existing leaks. - // https://crbug.com/755670 - "leak:third_party/yasm/\n" - // v8 leaks caused by weak ref not call "leak:blink::DOMWrapperWorld::Create\n" "leak:blink::ScriptState::Create\n" @@ -103,6 +105,14 @@ char kLSanDefaultSuppressions[] = // Suppress leak in DelayedCallbackGroup test. crbug.com/1279563 "leak:DelayedCallbackGroup_TimeoutAndRun_Test\n" #endif +#if BUILDFLAG(IS_MAC) + // These are caused by the system, but not yet clear if they are false + // positives or bugs in the Mac LSAN runtime. Suppress while investigating. + // TODO(https://crbug.com/1320449): Remove these if/when fixed in macOS + // or the runtime. + "leak:_ensureAuxServiceAwareOfHostApp\n" + "leak:cssmErrorString\n" +#endif // PLEASE READ ABOVE BEFORE ADDING NEW SUPPRESSIONS. diff --git a/build/sanitizers/tsan_suppressions.cc b/build/sanitizers/tsan_suppressions.cc index 4b9acab..d90546e 100644 --- a/build/sanitizers/tsan_suppressions.cc +++ b/build/sanitizers/tsan_suppressions.cc @@ -30,32 +30,13 @@ char kTSanDefaultSuppressions[] = // Intentional race in ToolsSanityTest.DataRace in base_unittests. "race:base/tools_sanity_unittest.cc\n" - // Data race on WatchdogCounter [test-only]. - "race:base/threading/watchdog_unittest.cc\n" - // Data race caused by swapping out the network change notifier with a mock // [test-only]. http://crbug.com/927330. "race:content/browser/net_info_browsertest.cc\n" - // http://crbug.com/120808 - "race:base/threading/watchdog.cc\n" - - // http://crbug.com/157586 - "race:third_party/libvpx/source/libvpx/vp8/decoder/threading.c\n" - // http://crbug.com/244856 "race:libpulsecommon*.so\n" - // http://crbug.com/268924 - "race:base::g_power_monitor\n" - "race:base::PowerMonitor::PowerMonitor\n" - "race:base::PowerMonitor::AddObserver\n" - "race:base::PowerMonitor::RemoveObserver\n" - "race:base::PowerMonitor::IsOnBatteryPower\n" - - // http://crbug.com/308590 - "race:CustomThreadWatcher::~CustomThreadWatcher\n" - // http://crbug.com/476529 "deadlock:cc::VideoLayerImpl::WillDraw\n" @@ -71,14 +52,6 @@ char kTSanDefaultSuppressions[] = // http://crbug.com/380554 "deadlock:g_type_add_interface_static\n" - // http://crbug.com/397022 - "deadlock:" - "base::trace_event::TraceEventTestFixture_ThreadOnceBlocking_Test::" - "TestBody\n" - - // http://crbug.com/415472 - "deadlock:base::trace_event::TraceLog::GetCategoryGroupEnabled\n" - // Lock inversion in third party code, won't fix. // https://crbug.com/455638 "deadlock:dbus::Bus::ShutdownAndBlock\n" @@ -86,9 +59,6 @@ char kTSanDefaultSuppressions[] = // https://crbug.com/459429 "race:randomnessPid\n" - // http://crbug.com/633145 - "race:third_party/libjpeg_turbo/simd/jsimd_x86_64.c\n" - // http://crbug.com/691029 "deadlock:libGLX.so*\n" @@ -102,17 +72,6 @@ char kTSanDefaultSuppressions[] = // http://crbug.com/927330 "race:net::(anonymous namespace)::g_network_change_notifier\n" - // https://crbug.com/977085 - "race:vp3_update_thread_context\n" - - // Benign data race in libjpeg-turbo, won't fix - // (https://github.com/libjpeg-turbo/libjpeg-turbo/issues/87). - // https://crbug.com/1056011 - "race:third_party/libjpeg_turbo/simd/x86_64/jsimd.c\n" - - // https://crbug.com/1158622 - "race:absl::synchronization_internal::Waiter::Post\n" - // Harmless data races, see WTF::StringImpl::Release code comments. "race:scoped_refptr::AddRef\n" "race:scoped_refptr::Release\n" @@ -122,9 +81,9 @@ char kTSanDefaultSuppressions[] = "race:ipcz::BlockAllocator::Allocate\n" // https://crbug.com/1405439 - "race:perfetto::perfetto_track_event::internal::g_category_state_storage\n" + "race:*::perfetto_track_event::internal::g_category_state_storage\n" "race:perfetto::DataSource*::static_state_\n" - "race:perfetto::Tracing::ResetForTesting\n" + "race:perfetto::*::ResetForTesting\n" // In V8 each global safepoint might lock isolate mutexes in a different // order. This is allowed in this context as it is always guarded by a diff --git a/build/skia_gold_common/PRESUBMIT.py b/build/skia_gold_common/PRESUBMIT.py index f3cc772..2a57eae 100644 --- a/build/skia_gold_common/PRESUBMIT.py +++ b/build/skia_gold_common/PRESUBMIT.py @@ -7,7 +7,6 @@ for more details on the presubmit API built into depot_tools. """ -USE_PYTHON3 = True PRESUBMIT_VERSION = '2.0.0' @@ -29,9 +28,7 @@ def CheckSkiaGoldCommonUnittests(input_api, output_api): input_api, output_api, input_api.PresubmitLocalPath(), [r'^.+_unittest\.py$'], - env=_GetSkiaGoldEnv(input_api), - run_on_python2=False, - skip_shebang_check=True) + env=_GetSkiaGoldEnv(input_api)) def CheckPylint(input_api, output_api): diff --git a/build/skia_gold_common/output_managerless_skia_gold_session.py b/build/skia_gold_common/output_managerless_skia_gold_session.py index c91222a..bf1f6be 100644 --- a/build/skia_gold_common/output_managerless_skia_gold_session.py +++ b/build/skia_gold_common/output_managerless_skia_gold_session.py @@ -11,18 +11,12 @@ import time from typing import List, Tuple -import six - from skia_gold_common import skia_gold_session class OutputManagerlessSkiaGoldSession(skia_gold_session.SkiaGoldSession): def RunComparison(self, *args, **kwargs) -> skia_gold_session.StepRetVal: - # Passing True for the output manager is a bit of a hack, as we don't - # actually need an output manager and just need to get past the truthy - # check. assert 'output_manager' not in kwargs, 'Cannot specify output_manager' - kwargs['output_manager'] = True return super().RunComparison(*args, **kwargs) def _CreateDiffOutputDir(self, name: str) -> str: @@ -49,14 +43,13 @@ def _StoreDiffLinks(self, image_name: str, _, output_dir: str) -> None: elif f == 'diff.png': results.local_diff_diff_image = file_url + def _RequiresOutputManager(self) -> bool: + return False + @staticmethod def _RunCmdForRcAndOutput(cmd: List[str]) -> Tuple[int, str]: try: - output = subprocess.check_output(cmd, - stderr=subprocess.STDOUT).decode('utf-8') + output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, text=True) return 0, output except subprocess.CalledProcessError as e: - output = e.output - if not isinstance(output, six.string_types): - output = output.decode('utf-8') - return e.returncode, output + return e.returncode, e.output diff --git a/build/skia_gold_common/output_managerless_skia_gold_session_unittest.py b/build/skia_gold_common/output_managerless_skia_gold_session_unittest.py index 11e8763..b2a16da 100755 --- a/build/skia_gold_common/output_managerless_skia_gold_session_unittest.py +++ b/build/skia_gold_common/output_managerless_skia_gold_session_unittest.py @@ -11,13 +11,7 @@ import tempfile from typing import Any import unittest - -import six - -if six.PY2: - import mock -else: - import unittest.mock as mock +import unittest.mock as mock from pyfakefs import fake_filesystem_unittest @@ -88,10 +82,7 @@ def test_explicitLocalPngDirectory(self, cmd_mock: mock.MagicMock, _) -> None: self._json_keys, '', '') _, _ = session.Diff('name', '', None) self.assertEqual(cmd_mock.call_count, 1) - if six.PY3: - call_args = cmd_mock.call_args.args[0] - else: - call_args = cmd_mock.call_args[0][0] + call_args = cmd_mock.call_args.args[0] self.assertIn('--out-dir', call_args) output_dir = call_args[call_args.index('--out-dir') + 1] # Directory should be a subdirectory of the directory we gave and be made diff --git a/build/skia_gold_common/skia_gold_properties.py b/build/skia_gold_common/skia_gold_properties.py index 91a24cb..feaf2cb 100644 --- a/build/skia_gold_common/skia_gold_properties.py +++ b/build/skia_gold_common/skia_gold_properties.py @@ -13,29 +13,41 @@ import logging import optparse import os -from typing import Union +import subprocess +import sys +from typing import Optional, Union + +CHROMIUM_SRC_DIR = os.path.realpath( + os.path.join(os.path.dirname(__file__), '..', '..')) ParsedCmdArgs = Union[argparse.Namespace, optparse.Values] +def _IsWin() -> bool: + return sys.platform == 'win32' + + class SkiaGoldProperties(): def __init__(self, args: ParsedCmdArgs): - """Abstract class to validate and store properties related to Skia Gold. + """Class to validate and store properties related to Skia Gold. + + The base implementation is usable on its own, but is meant to be overridden + as necessary. Args: args: The parsed arguments from an argparse.ArgumentParser. """ - self._git_revision = None - self._issue = None - self._patchset = None - self._job_id = None - self._local_pixel_tests = None - self._no_luci_auth = None - self._service_account = None - self._bypass_skia_gold_functionality = None - self._code_review_system = None - self._continuous_integration_system = None - self._local_png_directory = None + self._git_revision: Optional[str] = None + self._issue: Optional[int] = None + self._patchset: Optional[int] = None + self._job_id: Optional[str] = None + self._local_pixel_tests: Optional[bool] = None + self._no_luci_auth: Optional[bool] = None + self._service_account: Optional[str] = None + self._bypass_skia_gold_functionality: Optional[bool] = None + self._code_review_system: Optional[str] = None + self._continuous_integration_system: Optional[str] = None + self._local_png_directory: Optional[str] = None self._InitializeProperties(args) @@ -55,11 +67,11 @@ def git_revision(self) -> str: return self._GetGitRevision() @property - def issue(self) -> int: + def issue(self) -> Optional[int]: return self._issue @property - def job_id(self) -> str: + def job_id(self) -> Optional[str]: return self._job_id @property @@ -67,28 +79,36 @@ def local_pixel_tests(self) -> bool: return self._IsLocalRun() @property - def local_png_directory(self) -> str: + def local_png_directory(self) -> Optional[str]: return self._local_png_directory @property - def no_luci_auth(self) -> bool: + def no_luci_auth(self) -> Optional[bool]: return self._no_luci_auth @property - def service_account(self) -> str: + def service_account(self) -> Optional[str]: return self._service_account @property - def patchset(self) -> int: + def patchset(self) -> Optional[int]: return self._patchset @property - def bypass_skia_gold_functionality(self) -> bool: + def bypass_skia_gold_functionality(self) -> Optional[bool]: return self._bypass_skia_gold_functionality - @staticmethod - def _GetGitOriginMainHeadSha1() -> str: - raise NotImplementedError() + def _GetGitOriginMainHeadSha1(self) -> Optional[str]: + try: + return subprocess.check_output( + ['git', 'rev-parse', 'origin/main'], + shell=_IsWin(), + cwd=self._GetGitRepoDirectory()).decode('utf-8').strip() + except subprocess.CalledProcessError: + return None + + def _GetGitRepoDirectory(self) -> str: + return CHROMIUM_SRC_DIR def _GetGitRevision(self) -> str: if not self._git_revision: diff --git a/build/skia_gold_common/skia_gold_session.py b/build/skia_gold_common/skia_gold_session.py index b0b54a2..ff4ff2e 100644 --- a/build/skia_gold_common/skia_gold_session.py +++ b/build/skia_gold_common/skia_gold_session.py @@ -3,6 +3,7 @@ # found in the LICENSE file. """Class for interacting with the Skia Gold image diffing service.""" +import enum import logging import os import platform @@ -12,6 +13,8 @@ import time from typing import Any, Dict, List, Optional, Tuple +import dataclasses # Built-in, but pylint gives an ordering false positive. + from skia_gold_common import skia_gold_properties CHROMIUM_SRC = os.path.realpath( @@ -34,7 +37,8 @@ class SkiaGoldSession(): - class StatusCodes(): + @enum.unique + class StatusCodes(enum.IntEnum): """Status codes for RunComparison.""" SUCCESS = 0 AUTH_FAILURE = 1 @@ -44,16 +48,15 @@ class StatusCodes(): LOCAL_DIFF_FAILURE = 5 NO_OUTPUT_MANAGER = 6 + @dataclasses.dataclass class ComparisonResults(): """Struct-like object for storing results of an image comparison.""" - - def __init__(self): - self.public_triage_link: Optional[str] = None - self.internal_triage_link: Optional[str] = None - self.triage_link_omission_reason: Optional[str] = None - self.local_diff_given_image: Optional[str] = None - self.local_diff_closest_image: Optional[str] = None - self.local_diff_diff_image: Optional[str] = None + public_triage_link: Optional[str] = None + internal_triage_link: Optional[str] = None + triage_link_omission_reason: Optional[str] = None + local_diff_given_image: Optional[str] = None + local_diff_closest_image: Optional[str] = None + local_diff_diff_image: Optional[str] = None def __init__(self, working_dir: str, @@ -90,8 +93,8 @@ def __init__(self, dir=working_dir, delete=False) as triage_link_file: self._triage_link_file = triage_link_file.name - # A map of image name (string) to ComparisonResults for that image. - self._comparison_results = {} + # A map of image name to ComparisonResults for that image. + self._comparison_results: Dict[str, SkiaGoldSession.ComparisonResults] = {} self._authenticated = False self._initialized = False @@ -103,7 +106,7 @@ def __init__(self, def RunComparison(self, name: str, png_file: str, - output_manager: Any, + output_manager: Optional[Any] = None, inexact_matching_args: Optional[List[str]] = None, use_luci: bool = True, service_account: Optional[str] = None, @@ -163,7 +166,7 @@ def RunComparison(self, if not self._gold_properties.local_pixel_tests: return self.StatusCodes.COMPARISON_FAILURE_REMOTE, compare_stdout - if not output_manager: + if self._RequiresOutputManager() and not output_manager: return (self.StatusCodes.NO_OUTPUT_MANAGER, 'No output manager for local diff images') @@ -562,6 +565,10 @@ def _StoreDiffLinks(self, image_name: str, output_manager: Any, """ raise NotImplementedError() + def _RequiresOutputManager(self) -> bool: + """Whether this session implementation requires an output manager.""" + return True + @staticmethod def _RunCmdForRcAndOutput(cmd: List[str]) -> Tuple[int, str]: """Runs |cmd| and returns its returncode and output. diff --git a/build/skia_gold_common/skia_gold_session_manager.py b/build/skia_gold_common/skia_gold_session_manager.py index 976a72e..6d70ed9 100644 --- a/build/skia_gold_common/skia_gold_session_manager.py +++ b/build/skia_gold_common/skia_gold_session_manager.py @@ -5,22 +5,35 @@ import json import tempfile -from typing import Optional, Type, Union +from typing import Dict, Optional, Type, Union +from skia_gold_common import output_managerless_skia_gold_session from skia_gold_common import skia_gold_properties from skia_gold_common import skia_gold_session KeysInputType = Union[dict, str] +# { +# instance: { +# corpus: { +# keys_string: SkiaGoldSession, +# }, +# }, +# } +SessionMapType = Dict[str, Dict[str, Dict[str, + skia_gold_session.SkiaGoldSession]]] class SkiaGoldSessionManager(): def __init__(self, working_dir: str, gold_properties: skia_gold_properties.SkiaGoldProperties): - """Abstract class to manage one or more skia_gold_session.SkiaGoldSessions. + """Class to manage one or more skia_gold_session.SkiaGoldSessions. A separate session is required for each instance/corpus/keys_file combination, so this class will lazily create them as necessary. + The base implementation is usable on its own, but is meant to be overridden + as necessary. + Args: working_dir: The working directory under which each individual SkiaGoldSessions' working directory will be created. @@ -29,13 +42,14 @@ def __init__(self, working_dir: str, """ self._working_dir = working_dir self._gold_properties = gold_properties - self._sessions = {} - - def GetSkiaGoldSession(self, - keys_input: KeysInputType, - corpus: Optional[str] = None, - instance: Optional[str] = None, - bucket: Optional[str] = None): + self._sessions: SessionMapType = {} + + def GetSkiaGoldSession( + self, + keys_input: KeysInputType, + corpus: Optional[str] = None, + instance: Optional[str] = None, + bucket: Optional[str] = None) -> skia_gold_session.SkiaGoldSession: """Gets a SkiaGoldSession for the given arguments. Lazily creates one if necessary. @@ -86,7 +100,7 @@ def GetSessionClass() -> Type[skia_gold_session.SkiaGoldSession]: Returns: A reference to a SkiaGoldSession class. """ - raise NotImplementedError + return output_managerless_skia_gold_session.OutputManagerlessSkiaGoldSession def _GetKeysAsDict(keys_input: KeysInputType) -> dict: diff --git a/build/skia_gold_common/unittest_utils.py b/build/skia_gold_common/unittest_utils.py index 4fe23a9..d611350 100644 --- a/build/skia_gold_common/unittest_utils.py +++ b/build/skia_gold_common/unittest_utils.py @@ -8,37 +8,23 @@ import typing from typing import Optional -_SkiaGoldArgs = collections.namedtuple('_SkiaGoldArgs', [ - 'local_pixel_tests', - 'no_luci_auth', - 'service_account', - 'code_review_system', - 'continuous_integration_system', - 'git_revision', - 'gerrit_issue', - 'gerrit_patchset', - 'buildbucket_id', - 'bypass_skia_gold_functionality', - 'skia_gold_local_png_write_directory', -]) +import dataclasses # Built-in, but pylint gives an ordering false positive. -def createSkiaGoldArgs(local_pixel_tests: Optional[bool] = None, - no_luci_auth: Optional[bool] = None, - service_account: Optional[str] = None, - code_review_system: Optional[str] = None, - continuous_integration_system: Optional[str] = None, - git_revision: Optional[str] = None, - gerrit_issue: Optional[int] = None, - gerrit_patchset: Optional[int] = None, - buildbucket_id: Optional[int] = None, - bypass_skia_gold_functionality: Optional[bool] = None, - skia_gold_local_png_write_directory: Optional[str] = None - ) -> argparse.Namespace: - return typing.cast( - argparse.Namespace, - _SkiaGoldArgs(local_pixel_tests, no_luci_auth, service_account, - code_review_system, continuous_integration_system, - git_revision, gerrit_issue, gerrit_patchset, buildbucket_id, - bypass_skia_gold_functionality, - skia_gold_local_png_write_directory)) +@dataclasses.dataclass +class _SkiaGoldArgs(): + local_pixel_tests: Optional[bool] = None + no_luci_auth: Optional[bool] = None + service_account: Optional[str] = None + code_review_system: Optional[str] = None + continuous_integration_system: Optional[str] = None + git_revision: Optional[str] = None + gerrit_issue: Optional[int] = None + gerrit_patchset: Optional[int] = None + buildbucket_id: Optional[int] = None + bypass_skia_gold_functionality: Optional[bool] = None + skia_gold_local_png_write_directory: Optional[str] = None + + +def createSkiaGoldArgs(*args, **kwargs): + return typing.cast(argparse.Namespace, _SkiaGoldArgs(*args, **kwargs)) diff --git a/build/toolchain/android/BUILD.gn b/build/toolchain/android/BUILD.gn index 20257d9..cf347f4 100644 --- a/build/toolchain/android/BUILD.gn +++ b/build/toolchain/android/BUILD.gn @@ -20,41 +20,16 @@ template("android_clang_toolchain") { assert(defined(invoker.toolchain_args), "toolchain_args must be defined for android_clang_toolchain()") - # Android toolchains need to declare .dwp files as outputs, so need to know - # the value of "use_debug_fission" when defining them. - # The derived value of "use_debug_fission" varies based on current_os, but - # toolchain definitions are evaluated under the default toolchain. - # Rather than computing the value under current_os="android", just disable - # it if target_os != "android". - _use_debug_fission = use_debug_fission && target_os == "android" - toolchain_args = { forward_variables_from(invoker.toolchain_args, "*") current_os = "android" - use_debug_fission = _use_debug_fission + use_debug_fission = false } # Output linker map files for binary size analysis. enable_linker_map = true strip = rebase_path("$clang_base_path/bin/llvm-strip", root_build_dir) - if (_use_debug_fission) { - # llvm-dwp does not work with thin lto, so use binutils one. - # https://crbug.com/1264130 - if (toolchain_args.current_cpu == "arm") { - _dwp = "arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-dwp" - } else if (toolchain_args.current_cpu == "arm64") { - _dwp = "aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-dwp" - } else if (toolchain_args.current_cpu == "x86") { - _dwp = "x86-4.9/prebuilt/linux-x86_64/bin/i686-linux-android-dwp" - } else if (toolchain_args.current_cpu == "x64") { - _dwp = "x86_64-4.9/prebuilt/linux-x86_64/bin/x86_64-linux-android-dwp" - } else { - _dwp = "llvm/prebuilt/linux-x86_64/bin/llvm-dwp" - } - - dwp = rebase_path("$android_ndk_root/toolchains/$_dwp", root_build_dir) - } use_unstripped_as_runtime_outputs = android_unstripped_runtime_outputs @@ -74,12 +49,6 @@ android_clang_toolchain("android_clang_x86") { toolchain_args = { current_cpu = "x86" - # We lack the libclang_rt.profile library for x86 and x86_64, so we cannot - # link any binaries that are generated with coverage instrumentation. - # Therefore we need to turn off 'use_clang_coverage' for this toolchain. - # TODO(crbug.com/865376) - use_clang_coverage = false - # This turns off all of the LaCrOS-specific flags. A LaCrOS related build # may use |ash_clang_x64| or |lacros_clang_x64| toolchain, which are # chromeos toolchains, to build Ash-Chrome or Lacros-Chrome in a @@ -110,12 +79,6 @@ android_clang_toolchain("android_clang_x64") { toolchain_args = { current_cpu = "x64" - # We lack the libclang_rt.profile library for x86 and x86_64, so we cannot - # link any binaries that are generated with coverage instrumentation. - # Therefore we need to turn off 'use_clang_coverage' for this toolchain. - # TODO(crbug.com/865376) - use_clang_coverage = false - # This turns off all of the LaCrOS-specific flags. A LaCrOS related build # may use |ash_clang_x64| or |lacros_clang_x64| toolchain, which are # chromeos toolchains, to build Ash-Chrome or Lacros-Chrome in a @@ -150,6 +113,13 @@ android_clang_toolchain("android_clang_mips64el") { } } +# Placeholder for riscv64 support, not tested since the toolchain is not ready. +android_clang_toolchain("android_clang_riscv64") { + toolchain_args = { + current_cpu = "riscv64" + } +} + # Toolchain for creating native libraries that can be used by # robolectric_binary targets. It does not emulate NDK APIs nor make available # NDK header files. diff --git a/build/toolchain/apple/linker_driver.py b/build/toolchain/apple/linker_driver.py index 9827770..0632230 100755 --- a/build/toolchain/apple/linker_driver.py +++ b/build/toolchain/apple/linker_driver.py @@ -6,13 +6,20 @@ import os import os.path +import re import shutil import subprocess import sys import tempfile +# The path to `whole_archive`. +sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), '..')) + +import whole_archive + # Prefix for all custom linker driver arguments. LINKER_DRIVER_ARG_PREFIX = '-Wcrl,' +LINKER_DRIVER_COMPILER_ARG_PREFIX = '-Wcrl,driver,' # Linker action to create a directory and pass it to the linker as # `-object_path_lto`. Special-cased since it has to run before the link. OBJECT_PATH_LTO = 'object_path_lto' @@ -20,16 +27,21 @@ # The linker_driver.py is responsible for forwarding a linker invocation to # the compiler driver, while processing special arguments itself. # -# Usage: linker_driver.py clang++ main.o -L. -llib -o prog -Wcrl,dsym,out +# Usage: linker_driver.py -Wcrl,driver,clang++ main.o -L. -llib -o prog \ +# -Wcrl,dsym,out # # On Mac, the logical step of linking is handled by three discrete tools to # perform the image link, debug info link, and strip. The linker_driver.py # combines these three steps into a single tool. # -# The command passed to the linker_driver.py should be the compiler driver -# invocation for the linker. It is first invoked unaltered (except for the -# removal of the special driver arguments, described below). Then the driver -# performs additional actions, based on these arguments: +# The compiler driver invocation for the linker is specified by the following +# required argument. +# +# -Wcrl,driver, +# Specifies the path to the compiler driver. +# +# After running the compiler driver, the script performs additional actions, +# based on these arguments: # # -Wcrl,installnametoolpath, # Sets the path to the `install_name_tool` to run with @@ -63,19 +75,8 @@ # -Wcrl,strippath, # Sets the path to the strip to run with -Wcrl,strip, in which case # `xcrun` is not used to invoke it. -# TODO(crbug.com/1337780): Remove 'persist' when iOS no longer builds universal -# binaries. -# -Wcrl,object_path_lto,(optional) -# Creates temporary directory for LTO object files. If `persist` is passed -# the directory is named after the linker output and it's expected that a -# later invocation will pass `-Wcrl,clean_objects,` to clean it -# up. Otherwise, the temp directory is deleted at the end of this run. -# TODO(crbug.com/1337780): Remove this action when iOS no longer builds -# universal binaries. -# -Wcrl,clean_objects, -# Cleans up LTO object file directories for the targets in arguments. -# For each argument, looks for and deletes a directory at -# "{argument}.lto_objects" +# -Wcrl,object_path_lto +# Creates temporary directory for LTO object files. class LinkerDriver(object): @@ -85,8 +86,6 @@ def __init__(self, args): Args: args: list of string, Arguments to the script. """ - if len(args) < 2: - raise RuntimeError("Usage: linker_driver.py [linker-invocation]") self._args = args # List of linker driver actions. **The sort order of this list affects @@ -101,10 +100,10 @@ def __init__(self, args): ('unstripped,', self.run_save_unstripped), ('strippath,', self.set_strip_path), ('strip,', self.run_strip), - ('clean_objects', self.run_clean_objects), ] # Linker driver actions can modify the these values. + self._driver_path = None # Must be specified on the command line. self._install_name_tool_cmd = ['xcrun', 'install_name_tool'] self._dsymutil_cmd = ['xcrun', 'dsymutil'] self._strip_cmd = ['xcrun', 'strip'] @@ -113,10 +112,6 @@ def __init__(self, args): self._linker_output = None # The temporary directory for intermediate LTO object files. If it # exists, it will clean itself up on script exit. - self._object_path_lto_temp = None - # The path for intermediate LTO object files. This is either the name - # of `self._object_path_lto_temp` or a named directory that will be - # cleaned up in a future invocation. self._object_path_lto = None def run(self): @@ -130,21 +125,42 @@ def run(self): linker_driver_actions = {} compiler_driver_args = [] for index, arg in enumerate(self._args[1:]): - if arg.startswith(LINKER_DRIVER_ARG_PREFIX): + if arg.startswith(LINKER_DRIVER_COMPILER_ARG_PREFIX): + assert not self._driver_path + self._driver_path = arg[len(LINKER_DRIVER_COMPILER_ARG_PREFIX + ):] + elif arg.startswith(LINKER_DRIVER_ARG_PREFIX): # Convert driver actions into a map of name => lambda to invoke. driver_action = self._process_driver_arg(arg) assert driver_action[0] not in linker_driver_actions linker_driver_actions[driver_action[0]] = driver_action[1] else: - compiler_driver_args.append(arg) + # TODO(crbug.com/1446796): On Apple, the linker command line + # produced by rustc for LTO includes these arguments, but the + # Apple linker doesn't accept them. + # Upstream bug: https://github.com/rust-lang/rust/issues/60059 + BAD_RUSTC_ARGS = '-Wl,-plugin-opt=O[0-9],-plugin-opt=mcpu=.*' + if not re.match(BAD_RUSTC_ARGS, arg): + compiler_driver_args.append(arg) + + if not self._driver_path: + raise RuntimeError( + "Usage: linker_driver.py -Wcrl,driver, " + "[linker-args]...") if self._object_path_lto is not None: compiler_driver_args.append('-Wl,-object_path_lto,{}'.format( - self._object_path_lto)) + os.path.relpath(self._object_path_lto.name))) if self._get_linker_output() is None: raise ValueError( 'Could not find path to linker output (-o or --output)') + # We want to link rlibs as --whole-archive if they are part of a unit + # test target. This is determined by switch + # `-LinkWrapper,add-whole-archive`. + compiler_driver_args = whole_archive.wrap_with_whole_archive( + compiler_driver_args, is_apple=True) + linker_driver_outputs = [self._get_linker_output()] try: @@ -153,7 +169,8 @@ def run(self): env = os.environ.copy() env['ZERO_AR_DATE'] = '1' # Run the linker by invoking the compiler driver. - subprocess.check_call(compiler_driver_args, env=env) + subprocess.check_call([self._driver_path] + compiler_driver_args, + env=env) # Run the linker driver actions, in the order specified by the # actions list. @@ -199,17 +216,8 @@ def _process_driver_arg(self, arg): # TODO(lgrey): Remove if/when we start running `dsymutil` # through the clang driver. See https://crbug.com/1324104 if sub_arg == OBJECT_PATH_LTO: - self._object_path_lto_temp = tempfile.TemporaryDirectory( + self._object_path_lto = tempfile.TemporaryDirectory( dir=os.getcwd()) - self._object_path_lto = self._object_path_lto_temp.name - return (OBJECT_PATH_LTO, lambda: []) - elif sub_arg.startswith(OBJECT_PATH_LTO): - assert sub_arg[len(OBJECT_PATH_LTO):] == ',persist' - output = self._get_linker_output() - assert output - self._object_path_lto = output + '.lto_objects' - _remove_path(self._object_path_lto) - os.mkdir(self._object_path_lto) return (OBJECT_PATH_LTO, lambda: []) for driver_action in self._actions: @@ -354,25 +362,6 @@ def set_strip_path(self, strip_path): self._strip_cmd = [strip_path] return [] - def run_clean_objects(self, args_string): - """Linker driver action for -Wcrl,clean_objects,. - - For each argument, looks for a directory called "${argument}.lto_objects - and deletes it. - - Args: - arguments: string, Comma-separated prefixes of LTO object - directories to clean up - - Returns: - No output - """ - for output in args_string.lstrip(',').split(','): - name = output + '.lto_objects' - assert os.path.isdir(name) - shutil.rmtree(name) - return [] - def _find_tools_paths(full_args): """Finds all paths where the script should look for additional tools.""" diff --git a/build/toolchain/apple/toolchain.gni b/build/toolchain/apple/toolchain.gni index b1d4aa8..bdc8eda 100644 --- a/build/toolchain/apple/toolchain.gni +++ b/build/toolchain/apple/toolchain.gni @@ -23,6 +23,7 @@ import("//build_overrides/build.gni") # once the support is available. if (is_ios) { import("//build/config/ios/config.gni") + import("//build/config/ios/ios_sdk.gni") } assert((target_os == "ios" && host_os == "mac") || host_os != "win") @@ -45,12 +46,14 @@ _can_use_hermetic_swift = build_with_chromium && is_ios && target_environment != "catalyst" if (swift_toolchain_path == -1) { - if (_can_use_hermetic_swift) { + # TODO(crbug.com/1451611) The custom swift toolchain not does currently work + # with Xcode 15 beta 1. + if (_can_use_hermetic_swift && !(is_ios && xcode_version_int >= 1500)) { # Version of the hermetic compiler. Needs to be updated when a new version of # the compiler is rolled to ensure that all outputs are regenerated. It must # be kept in sync with the `version` of `third_party/swift-toolchain` in # //DEPS. - swiftc_version = "swift-5.7-release" + swiftc_version = "swift-5.8-release" # Use the hermetic swift toolchain. swift_toolchain_path = "//third_party/swift-toolchain/" @@ -87,8 +90,8 @@ tool_versions = # Shared toolchain definition. Invocations should set current_os to set the # build args in this definition. This is titled "single_apple_toolchain" # because it makes exactly one toolchain. Callers will normally want to -# invoke instead "apple_toolchain" which may make an additional toolchain -# without sanitizers. +# invoke instead "apple_toolchain" which makes an additional toolchain for +# Rust targets that are build-time artificts such as proc macros. template("single_apple_toolchain") { toolchain(target_name) { # When invoking this toolchain not as the default one, these args will be @@ -104,10 +107,6 @@ template("single_apple_toolchain") { # ensure that it's always the same, regardless of the values that may be # set on those toolchains. host_toolchain = host_toolchain - - # Similarly for the host toolchain which can be used to make .dylibs - # that will successfully load into prebuilt tools. - host_toolchain_no_sanitizers = host_toolchain_no_sanitizers } # When the invoker has explicitly overridden use_goma or cc_wrapper in the @@ -226,26 +225,17 @@ template("single_apple_toolchain") { cxx = "$python_path $_coverage_wrapper ${cxx}" } + linker_driver_env = "TOOL_VERSION=${tool_versions.linker_driver}" linker_driver = - "TOOL_VERSION=${tool_versions.linker_driver} " + rebase_path("//build/toolchain/apple/linker_driver.py", root_build_dir) + linker_driver_args = "-Wcrl,driver,$ld" # Specify an explicit path for the strip binary. _strippath = invoker.bin_path + "strip" _installnametoolpath = invoker.bin_path + "install_name_tool" - linker_driver += " -Wcrl,strippath,${_strippath} -Wcrl,installnametoolpath,${_installnametoolpath}" - - # On iOS, the final applications are assembled using lipo (to support fat - # builds). The correct flags are passed to the linker_driver.py script - # directly during the lipo call. The test is against the target_os because - # there is no need to create .dSYMs for targets compiled for the host. - if (defined(invoker.strip_with_lipo) && invoker.strip_with_lipo) { - _enable_dsyms = false - _save_unstripped_output = false - } else { - _enable_dsyms = enable_dsyms - _save_unstripped_output = save_unstripped_output - } + linker_driver_args += " -Wcrl,strippath,${_strippath} -Wcrl,installnametoolpath,${_installnametoolpath}" + _enable_dsyms = enable_dsyms + _save_unstripped_output = save_unstripped_output # Make these apply to all tools below. lib_switch = "-l" @@ -283,66 +273,136 @@ template("single_apple_toolchain") { if (!defined(rust_compiler_prefix)) { rust_compiler_prefix = "" } - rustc_bin = rebase_path("${rust_sysroot}/bin/rustc", root_build_dir) + rust_sysroot_relative = rebase_path(rust_sysroot, root_build_dir) + rustc_bin = "$rust_sysroot_relative/bin/rustc" rustc = "$rust_compiler_prefix${rustc_bin}" - rust_sysroot_relative_to_out = rebase_path(rust_sysroot, root_out_dir) - rustc_wrapper = rebase_path("//build/rust/rustc_wrapper.py") + rustc_wrapper = + rebase_path("//build/rust/rustc_wrapper.py", root_build_dir) tool("rust_staticlib") { - rust_outfile = "{{output_dir}}/{{target_output_name}}.a" - depfile = "{{output}}.d" - rspfile = "$rust_outfile.rsp" - rspfile_content = "{{rustdeps}} {{externs}}" - command = "$python_path \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- -Clinker=\"$_cxx\" $rustc_common_args --emit=dep-info=$depfile,link -o $rust_outfile LDFLAGS RUSTENV {{rustenv}}" - description = "RUST $rust_outfile" - rust_sysroot = rust_sysroot_relative_to_out - outputs = [ rust_outfile ] + libname = "{{output_dir}}/{{target_output_name}}{{output_extension}}" + rspfile = "$libname.rsp" + depfile = "$libname.d" + + default_output_extension = ".a" + output_prefix = "lib" + default_output_dir = "{{root_out_dir}}" + description = "RUST(STATICLIB) {{output}}" + outputs = [ libname ] + + # TODO(danakj): When `!toolchain_uses_lld` do we need to specify a path + # to libtool like the "alink" rule? + + rspfile_content = "{{rustdeps}} {{externs}} SOURCES {{sources}}" + command = "\"$python_path\" \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- -Clinker=\"$_cxx\" $rustc_common_args --emit=dep-info=$depfile,link -o $libname LDFLAGS RUSTENV {{rustenv}}" + rust_sysroot = rust_sysroot_relative } tool("rust_rlib") { - rust_outfile = "{{output_dir}}/lib{{target_output_name}}.rlib" - depfile = "{{output}}.d" - - # Do not use rsp files in this (common) case because they occupy the - # ninja main thread, and {{rlibs}} have shorter command lines than - # fully linked targets. - command = "$python_path \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile -- -Clinker=\"$_cxx\" $rustc_common_args {{rustdeps}} {{externs}} --emit=dep-info=$depfile,link -o $rust_outfile LDFLAGS RUSTENV {{rustenv}}" - description = "RUST $rust_outfile" - rust_sysroot = rust_sysroot_relative_to_out - outputs = [ rust_outfile ] + # We must always prefix with `lib` even if the library already starts + # with that prefix or else our stdlib is unable to find libc.rlib (or + # actually liblibc.rlib). + rlibname = + "{{output_dir}}/lib{{target_output_name}}{{output_extension}}" + rspfile = "$rlibname.rsp" + depfile = "$rlibname.d" + + default_output_extension = ".rlib" + + # This is prefixed unconditionally in `rlibname`. + # output_prefix = "lib" + default_output_dir = "{{root_out_dir}}" + description = "RUST {{output}}" + outputs = [ rlibname ] + + rspfile_content = "{{rustdeps}} {{externs}} SOURCES {{sources}}" + command = "\"$python_path\" \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- -Clinker=\"$_cxx\" $rustc_common_args {{rustdeps}} {{externs}} --emit=dep-info=$depfile,link -o $rlibname LDFLAGS RUSTENV {{rustenv}}" + rust_sysroot = rust_sysroot_relative } tool("rust_bin") { - rust_outfile = "{{root_out_dir}}/{{target_output_name}}" - depfile = "{{output}}.d" - rspfile = "$rust_outfile.rsp" - rspfile_content = "{{rustdeps}} {{externs}}" - command = "$python_path \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- -Clinker=\"${_cxx}\" $rustc_common_args --emit=dep-info=$depfile,link -o $rust_outfile LDFLAGS {{ldflags}} RUSTENV {{rustenv}}" - description = "RUST $rust_outfile" - rust_sysroot = rust_sysroot_relative_to_out - outputs = [ rust_outfile ] + exename = "{{output_dir}}/{{target_output_name}}{{output_extension}}" + rspfile = "$exename.rsp" + depfile = "$exename.d" + pool = "//build/toolchain:link_pool($default_toolchain)" + + # TODO(danakj): solink can generate TOC files for re-exporting library + # symbols, and we should do the same here. + + default_output_dir = "{{root_out_dir}}" + description = "RUST(BIN) {{output}}" + outputs = [ exename ] + + # TODO(danakj): Support dsym_switch like C++ targets. + # link_command += dsym_switch + # if (_enable_dsyms) { + # outputs += dsym_output + # } + # if (_save_unstripped_output) { + # outputs += [ _unstripped_output ] + # } + + rspfile_content = "{{rustdeps}} {{externs}} SOURCES {{sources}}" + command = "$linker_driver_env \"$python_path\" \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- -Clinker=\"$linker_driver\" $rustc_common_args --emit=dep-info=$depfile,link -o $exename LDFLAGS $linker_driver_args {{ldflags}} RUSTENV {{rustenv}}" + rust_sysroot = rust_sysroot_relative } tool("rust_cdylib") { - rust_outfile = "{{output_dir}}/lib{{target_output_name}}.dylib" - depfile = "{{output}}.d" - rspfile = "$rust_outfile.rsp" - rspfile_content = "{{rustdeps}} {{externs}}" - command = "$python_path \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- -Clinker=\"${_cxx}\" $rustc_common_args --emit=dep-info=$depfile,link -o $rust_outfile LDFLAGS {{ldflags}} RUSTENV {{rustenv}}" - description = "RUST $rust_outfile" - rust_sysroot = rust_sysroot_relative_to_out - outputs = [ rust_outfile ] + dllname = "{{output_dir}}/{{target_output_name}}{{output_extension}}" + rspfile = "$dllname.rsp" + depfile = "$dllname.d" + pool = "//build/toolchain:link_pool($default_toolchain)" + + # TODO(danakj): solink can generate TOC files for re-exporting library + # symbols, and we should do the same here. + + default_output_extension = ".dylib" + output_prefix = "lib" + default_output_dir = "{{root_out_dir}}" + description = "RUST(CDYLIB) {{output}}" + outputs = [ dllname ] + + # TODO(danakj): Support dsym_switch like C++ targets. + # link_command += dsym_switch + # if (_enable_dsyms) { + # outputs += dsym_output + # } + # if (_save_unstripped_output) { + # outputs += [ _unstripped_output ] + # } + + rspfile_content = "{{rustdeps}} {{externs}} SOURCES {{sources}}" + command = "$linker_driver_env \"$python_path\" \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- -Clinker=\"$linker_driver\" $rustc_common_args --emit=dep-info=$depfile,link -o $dllname LDFLAGS $linker_driver_args {{ldflags}} RUSTENV {{rustenv}}" + rust_sysroot = rust_sysroot_relative } tool("rust_macro") { - rust_outfile = "{{output_dir}}/lib{{target_output_name}}.dylib" - depfile = "{{output}}.d" - rspfile = "$rust_outfile.rsp" - rspfile_content = "{{rustdeps}} {{externs}}" - command = "$python_path \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- -Clinker=\"${_cxx}\" $rustc_common_args --emit=dep-info=$depfile,link -o $rust_outfile LDFLAGS {{ldflags}} RUSTENV {{rustenv}}" - description = "RUST $rust_outfile" - rust_sysroot = rust_sysroot_relative_to_out - outputs = [ rust_outfile ] + dllname = "{{output_dir}}/{{target_output_name}}{{output_extension}}" + rspfile = "$dllname.rsp" + depfile = "$dllname.d" + pool = "//build/toolchain:link_pool($default_toolchain)" + + # TODO(danakj): solink can generate TOC files for re-exporting library + # symbols, and we should do the same here. + + default_output_extension = ".dylib" + output_prefix = "lib" + default_output_dir = "{{root_out_dir}}" + description = "RUST(MACRO) {{output}}" + outputs = [ dllname ] + + # TODO(danakj): Support dsym_switch like C++ targets. + # link_command += dsym_switch + # if (_enable_dsyms) { + # outputs += dsym_output + # } + # if (_save_unstripped_output) { + # outputs += [ _unstripped_output ] + # } + + rspfile_content = "{{rustdeps}} {{externs}} SOURCES {{sources}}" + command = "\"$python_path\" \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- -Clinker=\"${_cxx}\" $rustc_common_args --emit=dep-info=$depfile,link -o $dllname LDFLAGS {{ldflags}} RUSTENV {{rustenv}}" + rust_sysroot = rust_sysroot_relative } } @@ -449,19 +509,21 @@ template("single_apple_toolchain") { does_reexport_command = "[ ! -e \"$dylib\" -o ! -e \"$tocname\" ] || $otool -l \"$dylib\" | grep -q LC_REEXPORT_DYLIB" - link_command = "$linker_driver $ld -shared " + link_command = + "$linker_driver_env $linker_driver $linker_driver_args -shared " if (toolchain_is_component_build) { link_command += " -Wl,-install_name,@rpath/\"{{target_output_name}}{{output_extension}}\" " } link_command += dsym_switch - link_command += "{{ldflags}} -o \"$dylib\" \"@$rspfile\"" + link_command += "{{ldflags}} -o \"$dylib\" \"@$rspfile\" {{rlibs}}" replace_command = "if ! cmp -s \"$temporary_tocname\" \"$tocname\"; then mv \"$temporary_tocname\" \"$tocname\"" extract_toc_command = "{ $otool -l \"$dylib\" | grep LC_ID_DYLIB -A 5; $nm -gPp \"$dylib\" | cut -f1-2 -d' ' | grep -v U\$\$; true; }" command = "if $does_reexport_command ; then $link_command && $extract_toc_command > \"$tocname\"; else $link_command && $extract_toc_command > \"$temporary_tocname\" && $replace_command ; fi; fi" - rspfile_content = "{{inputs}} {{frameworks}} {{swiftmodules}} {{solibs}} {{libs}} {{rlibs}}" + rspfile_content = + "{{inputs}} {{frameworks}} {{swiftmodules}} {{solibs}} {{libs}}" description = "SOLINK {{output}}" @@ -501,12 +563,12 @@ template("single_apple_toolchain") { rspfile = sofile + ".rsp" pool = "//build/toolchain:link_pool($default_toolchain)" - link_command = - "$linker_driver $ld -bundle {{ldflags}} -o \"$sofile\" \"@$rspfile\"" + link_command = "$linker_driver_env $linker_driver $linker_driver_args -bundle {{ldflags}} -o \"$sofile\" \"@$rspfile\" {{rlibs}}" link_command += dsym_switch command = link_command - rspfile_content = "{{inputs}} {{frameworks}} {{swiftmodules}} {{solibs}} {{libs}} {{rlibs}}" + rspfile_content = + "{{inputs}} {{frameworks}} {{swiftmodules}} {{solibs}} {{libs}}" description = "SOLINK_MODULE {{output}}" @@ -531,9 +593,10 @@ template("single_apple_toolchain") { rspfile = "$outfile.rsp" pool = "//build/toolchain:link_pool($default_toolchain)" - command = "$linker_driver $ld $dsym_switch {{ldflags}} -o \"$outfile\" \"@$rspfile\"" + command = "$linker_driver_env $linker_driver $linker_driver_args $dsym_switch {{ldflags}} -o \"$outfile\" \"@$rspfile\" {{rlibs}}" description = "LINK $outfile" - rspfile_content = "{{inputs}} {{frameworks}} {{swiftmodules}} {{solibs}} {{libs}} {{rlibs}}" + rspfile_content = + "{{inputs}} {{frameworks}} {{swiftmodules}} {{solibs}} {{libs}}" outputs = [ outfile ] if (_enable_dsyms) { @@ -570,7 +633,7 @@ template("single_apple_toolchain") { if (host_os == "mac") { command = "rm -rf {{output}} && /bin/cp -Rc {{source}} {{output}}" } else { - command = "rm -rf {{output}} && /bin/cp -Rl {{source}} {{output}}" + command = "rm -rf {{output}} && /bin/cp -Rld {{source}} {{output}}" } description = "COPY_BUNDLE_DATA {{source}} {{output}}" pool = "//build/toolchain/apple:bundle_pool($default_toolchain)" @@ -706,7 +769,6 @@ template("single_apple_toolchain") { "-module-path {{target_gen_dir}}/{{module_name}}.swiftmodule " + "-header-path {{target_gen_dir}}/{{target_output_name}}.h " + "-depfile {{target_out_dir}}/{{module_name}}.d " + - "-depfile-filter {{target_gen_dir}}/{{module_name}}.swiftmodule " + "-bridge-header {{bridge_header}} $_extra_flags " + "{{swiftflags}} {{include_dirs}} {{module_dirs}} {{inputs}}" } @@ -744,8 +806,9 @@ template("single_apple_toolchain") { } } -# Makes a single Apple toolchain, or possibly two if we need a -# sanitizer-free equivalent. +# Makes an Apple toolchain for the target, and an equivalent toolchain with the +# prebuilt Rust stdlib for building proc macros (and other for-build-use +# artifacts). template("apple_toolchain") { single_apple_toolchain(target_name) { assert(defined(invoker.toolchain_args), @@ -761,9 +824,16 @@ template("apple_toolchain") { # toolchains, but presubmit checks require that we explicitly exclude them } - if (using_sanitizer) { - # Make an additional toolchain with no sanitizers. - single_apple_toolchain("${target_name}_no_sanitizers") { + if (enable_rust && current_toolchain == default_toolchain) { + # Make an additional toolchain which is used for making tools that are run + # on the host machine as part of the build process (such as proc macros + # and Cargo build scripts). This toolchain uses the prebuilt stdlib that + # comes with the compiler, so it doesn't have to wait for the stdlib to be + # built before building other stuff. And this ensures its proc macro + # outputs have the right ABI to be loaded by the compiler, and it can be + # used to compile build scripts that are part of the stdlib that is built + # for the default toolchain. + single_apple_toolchain("${target_name}_for_rust_host_build_tools") { assert(defined(invoker.toolchain_args), "Toolchains must declare toolchain_args") forward_variables_from(invoker, @@ -776,7 +846,16 @@ template("apple_toolchain") { toolchain_args = { # Populate toolchain args from the invoker. forward_variables_from(invoker.toolchain_args, "*") - toolchain_disables_sanitizers = true + toolchain_for_rust_host_build_tools = true + + # The host build tools are static release builds to make the Chromium + # build faster. They do not need PGO etc, so no official builds. + is_debug = false + is_component_build = false + is_official_build = false + use_clang_coverage = false + use_sanitizer_coverage = false + generate_linker_map = false } } } diff --git a/build/toolchain/clang_code_coverage_wrapper.py b/build/toolchain/clang_code_coverage_wrapper.py index 5c90901..5490582 100755 --- a/build/toolchain/clang_code_coverage_wrapper.py +++ b/build/toolchain/clang_code_coverage_wrapper.py @@ -44,8 +44,13 @@ Example usage: clang_code_coverage_wrapper.py \\ --files-to-instrument=coverage_instrumentation_input.txt -""" +Siso implements the same logic in +build/config/siso/clang_code_coverage_wrapper.star, which avoids the wrapper +invocations for remote execution and performance improvement. +Please update the Siso starlark file when updating this file. +""" +# LINT.IfChange import argparse import os @@ -67,13 +72,7 @@ ] # Files that should not be built with coverage flags by default. -_DEFAULT_COVERAGE_EXCLUSION_LIST = [ - # TODO(crbug.com/1051561): angle_unittests affected by coverage. - '../../base/message_loop/message_pump_default.cc', - '../../base/message_loop/message_pump_libevent.cc', - '../../base/message_loop/message_pump_win.cc', - '../../base/task/sequence_manager/thread_controller_with_message_pump_impl.cc', #pylint: disable=line-too-long -] +_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 @@ -100,11 +99,6 @@ '../../components/media_router/common/providers/cast/channel/cast_message_util.cc', #pylint: disable=line-too-long '../../components/media_router/common/providers/cast/cast_media_source.cc', #pylint: disable=line-too-long '../../ui/events/keycodes/dom/keycode_converter.cc', - # TODO(crbug.com/1051561): angle_unittests affected by coverage. - '../../base/message_loop/message_pump_default.cc', - '../../base/message_loop/message_pump_libevent.cc', - '../../base/message_loop/message_pump_win.cc', - '../../base/task/sequence_manager/thread_controller_with_message_pump_impl.cc', #pylint: disable=line-too-long ], 'chromeos': [ # These files caused clang to crash while compiling them. They are @@ -113,18 +107,6 @@ '../../third_party/icu/source/common/uts46.cpp', '../../third_party/icu/source/common/ucnvmbcs.cpp', '../../base/android/android_image_reader_compat.cc', - # TODO(crbug.com/1051561): angle_unittests affected by coverage. - '../../base/message_loop/message_pump_default.cc', - '../../base/message_loop/message_pump_libevent.cc', - '../../base/message_loop/message_pump_win.cc', - '../../base/task/sequence_manager/thread_controller_with_message_pump_impl.cc', #pylint: disable=line-too-long - ], - 'win': [ - # TODO(crbug.com/1051561): angle_unittests affected by coverage. - '../../base/message_loop/message_pump_default.cc', - '../../base/message_loop/message_pump_libevent.cc', - '../../base/message_loop/message_pump_win.cc', - '../../base/task/sequence_manager/thread_controller_with_message_pump_impl.cc', #pylint: disable=line-too-long ], } @@ -238,3 +220,5 @@ def main(): if __name__ == '__main__': sys.exit(main()) + +# LINT.ThenChange(/build/config/siso/clang_code_coverage_wrapper.star) diff --git a/build/toolchain/cros/BUILD.gn b/build/toolchain/cros/BUILD.gn index c815e1a..12b82ee 100644 --- a/build/toolchain/cros/BUILD.gn +++ b/build/toolchain/cros/BUILD.gn @@ -134,6 +134,7 @@ cros_toolchain("nacl_bootstrap") { cc = cros_nacl_helper_arm32_cc cxx = cros_nacl_helper_arm32_cxx ld = cros_nacl_helper_arm32_ld + # Avoid accidental use of Arm64 sysroot because of SYSROOT # env variable set in ChromeOS builds. toolchain_args.sysroot = cros_nacl_helper_arm32_sysroot @@ -278,6 +279,12 @@ if (also_build_lacros_chrome_for_architecture != "") { also_build_lacros_chrome_for_architecture = "" chromeos_is_browser_only = true use_clang_coverage = false + + # Do not propagate AFDO settings from Ash build to Lacros build. + # Specifically, Lacros uses PGO by default, so this would + # conflict. + clang_use_default_sample_profile = false + clang_sample_profile_path = "" } if (!lacros_use_chromium_toolchain) { # These are args for the template. diff --git a/build/toolchain/gcc_toolchain.gni b/build/toolchain/gcc_toolchain.gni index 713c1b9..20c1066 100644 --- a/build/toolchain/gcc_toolchain.gni +++ b/build/toolchain/gcc_toolchain.gni @@ -108,9 +108,9 @@ if (enable_resource_allowlist_generation) { # all shared libraries and executables as they are built. The pre-stripped # artifacts will be put in lib.unstripped/ and exe.unstripped/. # -# Callers will normally want to invoke "gcc_toolchain" instead, which makes -# a toolchain just like this but may additionally create an extra toolchain -# without sanitizers for host-side tools. +# Callers will normally want to invoke "gcc_toolchain" instead, which makes an +# additional toolchain for Rust targets that are build-time artificts such as +# proc macros. template("single_gcc_toolchain") { toolchain(target_name) { assert(defined(invoker.ar), "gcc_toolchain() must specify a \"ar\" value") @@ -149,10 +149,6 @@ template("single_gcc_toolchain") { # set on those toolchains. host_toolchain = host_toolchain - # The same applies to the toolchain we use to build Rust procedural - # macros, which is probably the same but might have sanitizers disabled. - host_toolchain_no_sanitizers = host_toolchain_no_sanitizers - if (!defined(invoker_toolchain_args.v8_current_cpu)) { v8_current_cpu = invoker_toolchain_args.current_cpu } @@ -240,18 +236,14 @@ template("single_gcc_toolchain") { # number of jobs, but this results in too low a value on # Chrome OS builders. So we pass in an explicit value. link_prefix = - "$python_path " + + "\"$python_path\" " + rebase_path("//tools/clang/scripts/remote_ld.py", root_build_dir) + - " --wrapper ${goma_path} --jobs 200 -- " + " --wrapper ${goma_path} --jobs 200 --ar-path ${invoker.ar} -- " } else { link_prefix = "" not_needed([ "goma_path" ]) } - # Create a distinct variable for "asm", since coverage runs pass a bunch of - # flags to clang/clang++ that are nonsensical on assembler runs. - asm_prefix = compiler_prefix - # A specific toolchain may wish to avoid coverage instrumentation, so we # allow the global "use_clang_coverage" arg to be overridden. if (defined(toolchain_args.use_clang_coverage)) { @@ -291,12 +283,16 @@ template("single_gcc_toolchain") { rebase_path(toolchain_coverage_instrumentation_input_file, root_build_dir) } - compiler_prefix = "$python_path ${_coverage_wrapper} " + compiler_prefix + compiler_prefix = + "\"$python_path\" ${_coverage_wrapper} " + compiler_prefix } cc = compiler_prefix + invoker.cc cxx = compiler_prefix + invoker.cxx - asm = asm_prefix + invoker.cc + # "asm" doesn't support any of toolchain_cc_wrapper, toolchain_uses_goma and + # toolchain_uses_remoteexec. The coverage flags are also nonsensical on + # assembler runs. + asm = invoker.cc ar = invoker.ar ld = link_prefix + invoker.ld if (defined(invoker.readelf)) { @@ -423,7 +419,7 @@ template("single_gcc_toolchain") { if (host_os == "win") { tool_wrapper_path = rebase_path("//build/toolchain/win/tool_wrapper.py", root_build_dir) - command = "cmd /c $python_path $tool_wrapper_path delete-file {{output}} && $command" + command = "cmd /s /c \"\"$python_path\" $tool_wrapper_path delete-file {{output}} && $command\"" } else { command = "rm -f {{output}} && $command" } @@ -494,7 +490,7 @@ template("single_gcc_toolchain") { # (skipped on Aix) solink_extra_flags = "--partitioned-library" } - command = "$python_path \"$solink_wrapper\" --readelf=\"$readelf\" --nm=\"$nm\" $strip_switch$dwp_switch --sofile=\"$unstripped_sofile\" --tocfile=\"$tocfile\"$map_switch --output=\"$sofile\" -- $link_command $solink_extra_flags" + command = "\"$python_path\" \"$solink_wrapper\" --readelf=\"$readelf\" --nm=\"$nm\" $strip_switch$dwp_switch --sofile=\"$unstripped_sofile\" --tocfile=\"$tocfile\"$map_switch --output=\"$sofile\" -- $link_command $solink_extra_flags" if (target_cpu == "mipsel" && is_component_build && is_android) { rspfile_content = "-Wl,--start-group -Wl,--whole-archive {{inputs}} {{solibs}} -Wl,--no-whole-archive {{libs}} -Wl,--end-group" @@ -654,7 +650,7 @@ template("single_gcc_toolchain") { link_wrapper = rebase_path("//build/toolchain/gcc_link_wrapper.py", root_build_dir) - command = "$python_path \"$link_wrapper\" --output=\"$outfile\"$strip_switch$map_switch$dwp_switch -- $link_command" + command = "\"$python_path\" \"$link_wrapper\" --output=\"$outfile\"$strip_switch$map_switch$dwp_switch -- $link_command" description = "LINK $outfile" @@ -706,67 +702,99 @@ template("single_gcc_toolchain") { if (!defined(rust_compiler_prefix)) { rust_compiler_prefix = "" } - rustc_bin = rebase_path("${rust_sysroot}/bin/rustc", root_build_dir) + rust_sysroot_relative = rebase_path(rust_sysroot, root_build_dir) + rustc_bin = "$rust_sysroot_relative/bin/rustc" rustc = "$rust_compiler_prefix${rustc_bin}" - rust_sysroot_relative_to_out = rebase_path(rust_sysroot, root_out_dir) - rustc_wrapper = rebase_path("//build/rust/rustc_wrapper.py") + rustc_wrapper = + rebase_path("//build/rust/rustc_wrapper.py", root_build_dir) # RSP manipulation due to https://bugs.chromium.org/p/gn/issues/detail?id=249 tool("rust_staticlib") { - rust_outfile = "{{output_dir}}/{{target_output_name}}.a" - depfile = "{{output}}.d" - rspfile = "$rust_outfile.rsp" - rspfile_content = "{{rustdeps}} {{externs}}" - command = "$python_path \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- -Clinker=\"${invoker.cxx}\" $rustc_common_args --emit=dep-info=$depfile,link -o $rust_outfile LDFLAGS RUSTENV {{rustenv}}" - description = "RUST $rust_outfile" - rust_sysroot = rust_sysroot_relative_to_out - outputs = [ rust_outfile ] + libname = "{{output_dir}}/{{target_output_name}}{{output_extension}}" + rspfile = "$libname.rsp" + depfile = "$libname.d" + + default_output_extension = ".a" + output_prefix = "lib" + default_output_dir = "{{root_out_dir}}" + description = "RUST(STATICLIB) {{output}}" + outputs = [ libname ] + + rspfile_content = "{{rustdeps}} {{externs}} SOURCES {{sources}}" + command = "\"$python_path\" \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- -Clinker=\"${invoker.cxx}\" $rustc_common_args --emit=dep-info=$depfile,link -o $libname LDFLAGS RUSTENV {{rustenv}}" + rust_sysroot = rust_sysroot_relative } tool("rust_rlib") { - rust_outfile = "{{output_dir}}/lib{{target_output_name}}.rlib" - depfile = "{{output}}.d" + # We must always prefix with `lib` even if the library already starts + # with that prefix or else our stdlib is unable to find libc.rlib (or + # actually liblibc.rlib). + rlibname = + "{{output_dir}}/lib{{target_output_name}}{{output_extension}}" + rspfile = "$rlibname.rsp" + depfile = "$rlibname.d" - # Do not use rsp files in this (common) case because they occupy the - # ninja main thread, and {{rlibs}} have shorter command lines than - # fully linked targets. - command = "$python_path \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile -- -Clinker=\"${invoker.cxx}\" $rustc_common_args {{rustdeps}} {{externs}} --emit=dep-info=$depfile,link -o $rust_outfile LDFLAGS RUSTENV {{rustenv}}" - description = "RUST $rust_outfile" - rust_sysroot = rust_sysroot_relative_to_out - outputs = [ rust_outfile ] + default_output_extension = ".rlib" + + # This is prefixed unconditionally in `rlibname`. + # output_prefix = "lib" + default_output_dir = "{{root_out_dir}}" + description = "RUST {{output}}" + outputs = [ rlibname ] + + rspfile_content = "{{rustdeps}} {{externs}} SOURCES {{sources}}" + command = "\"$python_path\" \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- -Clinker=\"${invoker.cxx}\" $rustc_common_args --emit=dep-info=$depfile,link -o $rlibname LDFLAGS RUSTENV {{rustenv}}" + rust_sysroot = rust_sysroot_relative } tool("rust_bin") { - rust_outfile = "{{root_out_dir}}/{{target_output_name}}" - depfile = "{{output}}.d" - rspfile = "$rust_outfile.rsp" - rspfile_content = "{{rustdeps}} {{externs}}" - command = "$python_path \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- -Clinker=\"${invoker.cxx}\" $rustc_common_args --emit=dep-info=$depfile,link -o $rust_outfile LDFLAGS {{ldflags}} ${extra_ldflags} RUSTENV {{rustenv}}" - description = "RUST $rust_outfile" - rust_sysroot = rust_sysroot_relative_to_out - outputs = [ rust_outfile ] + exename = "{{output_dir}}/{{target_output_name}}{{output_extension}}" + depfile = "$exename.d" + rspfile = "$exename.rsp" + pool = "//build/toolchain:link_pool($default_toolchain)" + + default_output_extension = default_executable_extension + default_output_dir = "{{root_out_dir}}" + description = "RUST(BIN) {{output}}" + outputs = [ exename ] + + rspfile_content = "{{rustdeps}} {{externs}} SOURCES {{sources}}" + command = "\"$python_path\" \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- -Clinker=\"${invoker.cxx}\" $rustc_common_args --emit=dep-info=$depfile,link -o $exename LDFLAGS {{ldflags}} ${extra_ldflags} RUSTENV {{rustenv}}" + rust_sysroot = rust_sysroot_relative } tool("rust_cdylib") { - rust_outfile = "{{output_dir}}/lib{{target_output_name}}.so" - depfile = "{{output}}.d" - rspfile = "$rust_outfile.rsp" - rspfile_content = "{{rustdeps}} {{externs}}" - command = "$python_path \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- -Clinker=\"${invoker.cxx}\" $rustc_common_args --emit=dep-info=$depfile,link -o $rust_outfile LDFLAGS {{ldflags}} ${extra_ldflags} RUSTENV {{rustenv}}" - description = "RUST $rust_outfile" - rust_sysroot = rust_sysroot_relative_to_out - outputs = [ rust_outfile ] + dllname = "{{output_dir}}/{{target_output_name}}{{output_extension}}" + depfile = "$dllname.d" + rspfile = "$dllname.rsp" + pool = "//build/toolchain:link_pool($default_toolchain)" + + default_output_extension = default_shlib_extension + output_prefix = "lib" + default_output_dir = "{{root_out_dir}}${default_shlib_subdir}" + description = "RUST(CDYLIB) {{output}}" + outputs = [ dllname ] + + rspfile_content = "{{rustdeps}} {{externs}} SOURCES {{sources}}" + command = "\"$python_path\" \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- -Clinker=\"${invoker.cxx}\" $rustc_common_args --emit=dep-info=$depfile,link -o $dllname LDFLAGS {{ldflags}} ${extra_ldflags} RUSTENV {{rustenv}}" + rust_sysroot = rust_sysroot_relative } tool("rust_macro") { - rust_outfile = "{{output_dir}}/lib{{target_output_name}}.so" - depfile = "{{output}}.d" - rspfile = "$rust_outfile.rsp" - rspfile_content = "{{rustdeps}} {{externs}}" - command = "$python_path \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- -Clinker=\"${invoker.cxx}\" $rustc_common_args --emit=dep-info=$depfile,link -o $rust_outfile LDFLAGS {{ldflags}} ${extra_ldflags} RUSTENV {{rustenv}}" - description = "RUST $rust_outfile" - rust_sysroot = rust_sysroot_relative_to_out - outputs = [ rust_outfile ] + dllname = "{{output_dir}}/{{target_output_name}}{{output_extension}}" + depfile = "$dllname.d" + rspfile = "$dllname.rsp" + pool = "//build/toolchain:link_pool($default_toolchain)" + + default_output_extension = default_shlib_extension + output_prefix = "lib" + default_output_dir = "{{root_out_dir}}${default_shlib_subdir}" + description = "RUST(MACRO) {{output}}" + outputs = [ dllname ] + + rspfile_content = "{{rustdeps}} {{externs}} SOURCES {{sources}}" + command = "\"$python_path\" \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- -Clinker=\"${invoker.cxx}\" $rustc_common_args --emit=dep-info=$depfile,link -o $dllname LDFLAGS {{ldflags}} ${extra_ldflags} RUSTENV {{rustenv}}" + rust_sysroot = rust_sysroot_relative } } @@ -778,8 +806,9 @@ template("single_gcc_toolchain") { } } -# Makes a single GCC toolchain, or possibly two if we need -# an equivalent toolchain without sanitizers. +# Makes a GCC toolchain for the target, and an equivalent toolchain with the +# prebuilt Rust stdlib for building proc macros (and other for-build-use +# artifacts). template("gcc_toolchain") { single_gcc_toolchain(target_name) { assert(defined(invoker.toolchain_args), @@ -795,9 +824,16 @@ template("gcc_toolchain") { # toolchains, but presubmit checks require that we explicitly exclude them } - if (using_sanitizer) { - # Make an additional toolchain with no sanitizers. - single_gcc_toolchain("${target_name}_no_sanitizers") { + if (enable_rust && current_toolchain == default_toolchain) { + # Make an additional toolchain which is used for making tools that are run + # on the host machine as part of the build process (such as proc macros + # and Cargo build scripts). This toolchain uses the prebuilt stdlib that + # comes with the compiler, so it doesn't have to wait for the stdlib to be + # built before building other stuff. And this ensures its proc macro + # outputs have the right ABI to be loaded by the compiler, and it can be + # used to compile build scripts that are part of the stdlib that is built + # for the default toolchain. + single_gcc_toolchain("${target_name}_for_rust_host_build_tools") { assert(defined(invoker.toolchain_args), "Toolchains must declare toolchain_args") forward_variables_from(invoker, @@ -810,8 +846,21 @@ template("gcc_toolchain") { toolchain_args = { # Populate toolchain args from the invoker. forward_variables_from(invoker.toolchain_args, "*") - toolchain_disables_sanitizers = true + toolchain_for_rust_host_build_tools = true + + # The host build tools are static release builds to make the Chromium + # build faster. + is_debug = false + is_component_build = false + is_official_build = false + use_clang_coverage = false + use_sanitizer_coverage = false + generate_linker_map = false } + + # When cross-compiling we don't want to use the target platform's file + # extensions. + shlib_extension = host_shlib_extension } } } diff --git a/build/toolchain/ios/BUILD.gn b/build/toolchain/ios/BUILD.gn index cfcbdc6..349f8ce 100644 --- a/build/toolchain/ios/BUILD.gn +++ b/build/toolchain/ios/BUILD.gn @@ -18,7 +18,6 @@ template("ios_toolchain") { deployment_target = ios_deployment_target target_environment = target_environment bin_path = ios_bin_path - strip_with_lipo = true toolchain_args = { forward_variables_from(invoker.toolchain_args, "*") @@ -28,73 +27,85 @@ template("ios_toolchain") { } } -ios_toolchain("ios_clang_arm64") { - toolchain_args = { - current_cpu = "arm64" +# Specialisation of the ios_toolchain template to declare the toolchain +# and its tools to build application extension for iOS platform. +template("ios_app_ext_toolchain") { + assert(defined(invoker.toolchain_args), + "Toolchains must declare toolchain_args") + + ios_toolchain(target_name) { + forward_variables_from(invoker, "*", [ "toolchain_args" ]) + + toolchain_args = { + forward_variables_from(invoker.toolchain_args, "*") + + ios_is_app_extension = true + + # Those variables are defined outside of //build and thus only exists + # when used as part of Chromium. Use build_with_chromium to check if + # they can be overridden safely. This prevents breaking third-party + # projects such as WebRTC that only uses //build but not //base. + if (build_with_chromium) { + use_partition_alloc = false + ios_partition_alloc_enabled = false + } + } } } -ios_toolchain("ios_clang_arm64_13_4") { +ios_toolchain("ios_clang_arm64") { toolchain_args = { current_cpu = "arm64" - ios_deployment_target = "13.4" } } -ios_toolchain("ios_clang_arm64_fat_arm") { +ios_toolchain("ios_clang_arm") { toolchain_args = { current_cpu = "arm" - is_fat_secondary_toolchain = true - primary_fat_toolchain_name = "//build/toolchain/ios:ios_clang_arm64" } } -ios_toolchain("ios_clang_arm") { +ios_toolchain("ios_clang_x64") { toolchain_args = { - current_cpu = "arm" + current_cpu = "x64" } } -ios_toolchain("ios_clang_x64") { +ios_toolchain("ios_clang_x86") { toolchain_args = { - current_cpu = "x64" + current_cpu = "x86" } } -ios_toolchain("ios_clang_x64_fat_arm64") { +ios_app_ext_toolchain("ios_clang_arm64_app_ext") { toolchain_args = { current_cpu = "arm64" - is_fat_secondary_toolchain = true - primary_fat_toolchain_name = "//build/toolchain/ios:ios_clang_x64" } } -ios_toolchain("ios_clang_x64_13_4") { +ios_app_ext_toolchain("ios_clang_arm64_app_ext_13_4") { toolchain_args = { - current_cpu = "x64" + current_cpu = "arm64" ios_deployment_target = "13.4" } } -ios_toolchain("ios_clang_x64_13_4_fat_arm64") { +ios_app_ext_toolchain("ios_clang_x64_app_ext") { toolchain_args = { - current_cpu = "arm64" - is_fat_secondary_toolchain = true - primary_fat_toolchain_name = "//build/toolchain/ios:ios_clang_x64_13_4" - ios_deployment_target = "13.4" + current_cpu = "x64" } } -ios_toolchain("ios_clang_x64_fat_x86") { +ios_app_ext_toolchain("ios_clang_x64_app_ext_13_4") { toolchain_args = { - current_cpu = "x86" - is_fat_secondary_toolchain = true - primary_fat_toolchain_name = "//build/toolchain/ios:ios_clang_x64" + current_cpu = "x64" + ios_deployment_target = "13.4" } } -ios_toolchain("ios_clang_x86") { +ios_toolchain("ios_clang_arm64_blink") { toolchain_args = { - current_cpu = "x86" + current_cpu = "arm64" + use_blink = true } } diff --git a/build/toolchain/ios/swiftc.py b/build/toolchain/ios/swiftc.py index 8c7779f..87071aa 100644 --- a/build/toolchain/ios/swiftc.py +++ b/build/toolchain/ios/swiftc.py @@ -1,4 +1,4 @@ -# Copyright 2020 The Chromium Authors +# Copyright 2023 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. @@ -27,8 +27,8 @@ def fix_module_imports(header_path, output_path): header_contents = [] with open(header_path, 'r') as header_file: for line in header_file: - if line == '#if __has_feature(modules)\n': - header_contents.append('#if 1 // #if __has_feature(modules)\n') + if line == '#if __has_feature(objc_modules)\n': + header_contents.append('#if 1 // #if __has_feature(objc_modules)\n') nesting_level = 1 for line in header_file: if line == '#endif\n': @@ -242,12 +242,8 @@ def compile_module(module, sources, settings, extras, tmpdir): path = os.path.relpath(path, out_dir) depfile_content[key].add(path) - if not settings.depfile_filter: - keys = depfile_content.keys() - else: - keys = (key for key in settings.depfile_filter if key in depfile_content) - with open(settings.depfile, 'w') as depfile: + keys = sorted(depfile_content.keys()) for key in sorted(keys): depfile.write('%s : %s\n' % (key, ' '.join(sorted(depfile_content[key])))) @@ -279,9 +275,6 @@ def main(args): parser.add_argument('-depfile', help='path to the generated depfile') parser.add_argument('-swift-version', help='version of Swift language to support') - parser.add_argument('-depfile-filter', - action='append', - help='limit depfile to those files') parser.add_argument('-target', action='store', help='generate code for the given target ') diff --git a/build/toolchain/linux/BUILD.gn b/build/toolchain/linux/BUILD.gn index 5851d26..2eefac5 100644 --- a/build/toolchain/linux/BUILD.gn +++ b/build/toolchain/linux/BUILD.gn @@ -181,6 +181,7 @@ clang_v8_toolchain("clang_x64_v8_loong64") { # In a LaCrOS build, this toolchain is intended to be used as an alternate # toolchain to build Ash-Chrome in a subdirectory. +# This is a test-only toolchain. clang_toolchain("ash_clang_x64") { toolchain_args = { # This turns the toolchain into the "Linux ChromeOS" build @@ -202,6 +203,7 @@ clang_toolchain("ash_clang_x64") { # In an ash build, this toolchain is intended to be used as an alternate # toolchain to build lacros-Chrome in a subdirectory. +# This is a test-only toolchain. clang_toolchain("lacros_clang_x64") { toolchain_args = { # This turns the toolchain into the "Lacros" build @@ -213,8 +215,6 @@ clang_toolchain("lacros_clang_x64") { also_build_lacros_chrome = false chromeos_is_browser_only = true use_clang_coverage = false - dcheck_always_on = false - symbol_level = 1 } } diff --git a/build/toolchain/mac/BUILD.gn b/build/toolchain/mac/BUILD.gn index 387d9c1..ce3a31a 100644 --- a/build/toolchain/mac/BUILD.gn +++ b/build/toolchain/mac/BUILD.gn @@ -3,6 +3,7 @@ # found in the LICENSE file. import("//build/config/mac/mac_sdk.gni") +import("//build/config/v8_target_cpu.gni") import("//build/toolchain/apple/toolchain.gni") import("//build_overrides/build.gni") @@ -42,6 +43,10 @@ template("mac_toolchain") { # not supported by the Chromium mac_clang_x64 toolchain on iOS # distribution. use_sanitizer_coverage = false + + # iOS supports being build with or without blink, but macOS requires + # it to be enabled, even if iOS build force disable it in args.gn. + use_blink = true } } } @@ -74,49 +79,42 @@ mac_toolchain("clang_x86") { mac_toolchain("clang_x86_v8_arm") { toolchain_args = { current_cpu = "x86" - - if (defined(v8_current_cpu)) { - v8_current_cpu = "arm" - } + v8_current_cpu = "arm" } } mac_toolchain("clang_x86_v8_mipsel") { toolchain_args = { current_cpu = "x86" - - if (defined(v8_current_cpu)) { - v8_current_cpu = "mipsel" - } + v8_current_cpu = "mipsel" } } mac_toolchain("clang_x64_v8_arm64") { toolchain_args = { current_cpu = "x64" - - if (defined(v8_current_cpu)) { - v8_current_cpu = "arm64" - } + v8_current_cpu = "arm64" } } mac_toolchain("clang_x64_v8_mips64el") { toolchain_args = { current_cpu = "x64" - - if (defined(v8_current_cpu)) { - v8_current_cpu = "mips64el" - } + v8_current_cpu = "mips64el" } } mac_toolchain("clang_arm64_v8_x64") { toolchain_args = { current_cpu = "arm64" + v8_current_cpu = "x64" + } +} - if (defined(v8_current_cpu)) { - v8_current_cpu = "x64" - } +# Needed to run v8 on the host during a arm64 -> x86_64 cross-build +mac_toolchain("clang_arm64_v8_arm64") { + toolchain_args = { + current_cpu = "arm64" + v8_current_cpu = "arm64" } } diff --git a/build/toolchain/nacl/BUILD.gn b/build/toolchain/nacl/BUILD.gn index 00f7189..2f159a1 100644 --- a/build/toolchain/nacl/BUILD.gn +++ b/build/toolchain/nacl/BUILD.gn @@ -262,6 +262,43 @@ template("nacl_irt_toolchain") { } } +# This is essentially a clone of nacl_irt_toolchain above, except it uses the +# standard ld. This toolchain can be used to build regular nexes for NaCl +# browser tests. +template("nacl_test_irt_toolchain") { + toolchain_cpu = target_name + assert(defined(invoker.toolchain_tuple), "Must define toolchain_tuple") + + toolchain_package = "saigo_newlib" + toolchain_revision = saigo_newlib_rev + toolprefix = rebase_path("${nacl_toolchain_dir}/${toolchain_package}/bin/" + + invoker.toolchain_tuple + "-", + root_build_dir) + + if (host_os == "win") { + # Flip the slashes so that copy/paste of the commands works. + # This is also done throughout build\toolchain\win\BUILD.gn + toolprefix = string_replace(toolprefix, "/", "\\") + } + + nacl_toolchain("test_irt_" + toolchain_cpu) { + cc = toolprefix + "clang" + toolsuffix + cxx = toolprefix + "clang++" + toolsuffix + ar = toolprefix + "ar" + toolsuffix + ld = cxx + readelf = toolprefix + "readelf" + toolsuffix + nm = toolprefix + "nm" + toolsuffix + strip = toolprefix + "strip" + toolsuffix + + toolchain_args = { + current_cpu = toolchain_cpu + is_clang = true + use_lld = false + is_nacl_saigo = true + } + } +} + template("nacl_clang_toolchains") { assert(defined(invoker.toolchain_tuple), "Must define toolchain_tuple") nacl_clang_toolchain(target_name) { @@ -270,6 +307,9 @@ template("nacl_clang_toolchains") { nacl_irt_toolchain(target_name) { toolchain_tuple = invoker.toolchain_tuple } + nacl_test_irt_toolchain(target_name) { + toolchain_tuple = invoker.toolchain_tuple + } } nacl_clang_toolchains("x86") { diff --git a/build/toolchain/nacl_toolchain.gni b/build/toolchain/nacl_toolchain.gni index 1a5bf7f..cfa820a 100644 --- a/build/toolchain/nacl_toolchain.gni +++ b/build/toolchain/nacl_toolchain.gni @@ -64,6 +64,14 @@ template("nacl_toolchain") { rbe_cc_cfg_file = "${rbe_cfg_dir}/nacl/rewrapper_linux.cfg" } } + + if (use_remoteexec_links) { + rbe_link_cfg_file = "${rbe_cfg_dir}/nacl/rewrapper_linux_link.cfg" + } + + # TODO(b/282032209): Re-enable remote nacl links once mismatches due to + # linking with absolute paths has been fixed. + use_remoteexec_links = false } } } diff --git a/build/toolchain/rbe.gni b/build/toolchain/rbe.gni index 2519f22..cd86e22 100644 --- a/build/toolchain/rbe.gni +++ b/build/toolchain/rbe.gni @@ -3,13 +3,13 @@ # The directory where the re-client tooling binaries are. rbe_bin_dir = rebase_path("//buildtools/reclient", root_build_dir) -# Execution root - this should be the root of the source tree. -# This is defined here instead of in the config file because -# this will vary depending on where the user has placed the -# chromium source on their system. -rbe_exec_root = rebase_path("//") - declare_args() { + # Execution root - this should be the root of the source tree. + # This is defined here instead of in the config file because + # this will vary depending on where the user has placed the + # chromium source on their system. + rbe_exec_root = rebase_path("//") + # Set to true to enable remote compilation using reclient. use_remoteexec = false diff --git a/build/toolchain/siso.gni b/build/toolchain/siso.gni new file mode 100644 index 0000000..c7b2dc4 --- /dev/null +++ b/build/toolchain/siso.gni @@ -0,0 +1,7 @@ +# Defines the configuration of siso (next-gen build system) + +declare_args() { + # Placeholder to allow having use_siso in args.gn files and to disable + # precompiled headers in siso builds. + use_siso = false +} diff --git a/build/toolchain/toolchain.gni b/build/toolchain/toolchain.gni index a1ec3f3..1ab0622 100644 --- a/build/toolchain/toolchain.gni +++ b/build/toolchain/toolchain.gni @@ -24,10 +24,10 @@ declare_args() { # Used for binary size analysis. generate_linker_map = is_android && is_official_build - # Whether this toolchain should avoid building any sanitizer support - # because it's a host toolchain where we aim to make shared objects that may - # be loaded by prebuilt binaries without sanitizer support. - toolchain_disables_sanitizers = false + # Whether this toolchain is to be used for building host tools that are + # consumed during the build process. That includes proc macros and Cargo build + # scripts. + toolchain_for_rust_host_build_tools = false } if (generate_linker_map) { @@ -42,7 +42,12 @@ if (generate_linker_map) { } declare_args() { - clang_version = "17" + if (llvm_force_head_revision) { + clang_version = "18" + } else { + # TODO(crbug.com/1467585): Remove in the next clang roll + clang_version = "17" + } } # Extension for shared library files (including leading dot). @@ -60,6 +65,18 @@ if (is_apple) { assert(false, "Platform not supported") } +# Same extension but for the host platform. We have significantly fewer host +# platforms. +if (host_os == "mac") { + host_shlib_extension = ".dylib" +} else if (host_os == "win") { + host_shlib_extension = ".dll" +} else if (host_os == "linux" || host_os == "aix") { + host_shlib_extension = ".so" +} else { + assert(false, "Host platform not supported") +} + # Prefix for shared library files. if (is_posix || is_fuchsia) { shlib_prefix = "lib" @@ -87,17 +104,12 @@ if (host_os == "win") { rebase_path("//build/toolchain/win/tool_wrapper.py", root_build_dir) stamp_command = "cmd /c type nul > \"{{output}}\"" - copy_command = - "$python_path $_tool_wrapper_path recursive-mirror {{source}} {{output}}" + copy_command = "\"$python_path\" $_tool_wrapper_path recursive-mirror {{source}} {{output}}" } else { stamp_command = "touch {{output}}" copy_command = "ln -f {{source}} {{output}} 2>/dev/null || (rm -rf {{output}} && cp -af {{source}} {{output}})" } -if (!defined(toolchain_disables_sanitizers)) { - toolchain_disables_sanitizers = false -} - # This variable is true if the current toolchain is one of the target # toolchains, i.e. a toolchain which is being used to build the main Chrome # binary. This generally means "not the host toolchain", but in the case where diff --git a/build/toolchain/whole_archive.py b/build/toolchain/whole_archive.py new file mode 100644 index 0000000..2a15989 --- /dev/null +++ b/build/toolchain/whole_archive.py @@ -0,0 +1,57 @@ +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import re + + +def wrap_with_whole_archive(command, is_apple=False): + """Modify and return `command` such that -LinkWrapper,add-whole-archive=X + becomes a linking inclusion X (-lX) but wrapped in whole-archive + modifiers.""" + + # We want to link rlibs as --whole-archive if they are part of a unit test + # target. This is determined by switch `-LinkWrapper,add-whole-archive`. + # + # TODO(danakj): If the linking command line gets too large we could move + # {{rlibs}} into the rsp file, but then this script needs to modify the rsp + # file instead of the command line. + def extract_libname(s): + m = re.match(r'-LinkWrapper,add-whole-archive=(.+)', s) + return m.group(1) + + # The set of libraries we want to apply `--whole-archive`` to. + whole_archive_libs = [ + extract_libname(x) for x in command + if x.startswith("-LinkWrapper,add-whole-archive=") + ] + + # Remove the arguments meant for consumption by this LinkWrapper script. + command = [x for x in command if not x.startswith("-LinkWrapper,")] + + def has_any_suffix(string, suffixes): + for suffix in suffixes: + if string.endswith(suffix): + return True + return False + + def wrap_libs_with(command, libnames, before, after): + out = [] + for arg in command: + # The arg is a full path to a library, we look if the the library name (a + # suffix of the full arg) is one of `libnames`. + if has_any_suffix(arg, libnames): + out.extend([before, arg]) + if after: + out.append(after) + else: + out.append(arg) + return out + + if is_apple: + # Apply -force_load to the libraries that desire it. + return wrap_libs_with(command, whole_archive_libs, "-Wl,-force_load", None) + else: + # Apply --whole-archive to the libraries that desire it. + return wrap_libs_with(command, whole_archive_libs, "-Wl,--whole-archive", + "-Wl,--no-whole-archive") diff --git a/build/toolchain/win/BUILD.gn b/build/toolchain/win/BUILD.gn index 6129385..fe09790 100644 --- a/build/toolchain/win/BUILD.gn +++ b/build/toolchain/win/BUILD.gn @@ -65,6 +65,11 @@ win_toolchains("nacl_win64") { if (target_os == "winuwp") { assert(target_cpu == "x64" || target_cpu == "x86" || target_cpu == "arm" || target_cpu == "arm64") + + # Note that //build/toolchain/win/win_toolchain_data.gni collects the output + # of setup_toolchain.py, however it's not compatible with the UWP toolchain, + # as the UWP toolchain requires the `environment.store_$CPU` variable, instead + # of the usual `environment.$CPU`. store_cpu_toolchain_data = exec_script("//build/toolchain/win/setup_toolchain.py", [ diff --git a/build/toolchain/win/rc/linux64/rc.sha1 b/build/toolchain/win/rc/linux64/rc.sha1 index 0d132a0..d7fb0a4 100644 --- a/build/toolchain/win/rc/linux64/rc.sha1 +++ b/build/toolchain/win/rc/linux64/rc.sha1 @@ -1 +1 @@ -1ca25446f5eed4151dc9b43c2a9182433e8f83c0 \ No newline at end of file +e8c939754f74d1951680597386a062323ce9a215 \ No newline at end of file diff --git a/build/toolchain/win/rc/mac/rc.sha1 b/build/toolchain/win/rc/mac/rc.sha1 index cd9deb9..c815ed7 100644 --- a/build/toolchain/win/rc/mac/rc.sha1 +++ b/build/toolchain/win/rc/mac/rc.sha1 @@ -1 +1 @@ -95e7af85589f1102667fc07efe488fd426c483e8 \ No newline at end of file +059087bd43540dee5a42ac9040c9a877e12e939d \ No newline at end of file diff --git a/build/toolchain/win/rc/win/rc.exe.sha1 b/build/toolchain/win/rc/win/rc.exe.sha1 index 30c641e..3e13e41 100644 --- a/build/toolchain/win/rc/win/rc.exe.sha1 +++ b/build/toolchain/win/rc/win/rc.exe.sha1 @@ -1 +1 @@ -7d3a485bb5bae0cf3c6b8af95d21f36aa7d02832 \ No newline at end of file +6f85dcbb9eb8e31022cf3064dc7f1d129a8f0ad7 \ No newline at end of file diff --git a/build/toolchain/win/toolchain.gni b/build/toolchain/win/toolchain.gni index 67f20f2..b296cfb 100644 --- a/build/toolchain/win/toolchain.gni +++ b/build/toolchain/win/toolchain.gni @@ -11,6 +11,7 @@ import("//build/toolchain/cc_wrapper.gni") import("//build/toolchain/goma.gni") import("//build/toolchain/rbe.gni") import("//build/toolchain/toolchain.gni") +import("//build/toolchain/win/win_toolchain_data.gni") assert(is_win, "Should only be running on Windows") @@ -26,9 +27,7 @@ if (host_os == "win") { _clang_bin_path = rebase_path("$clang_base_path/bin", root_build_dir) -# Makes a single MSVC toolchain. Callers should normally instead invoke -# "msvc_toolchain" which might make an additional toolchain available -# without sanitizers if required. +# Makes a single MSVC toolchain. # # Parameters: # environment: File name of environment file. @@ -36,7 +35,7 @@ _clang_bin_path = rebase_path("$clang_base_path/bin", root_build_dir) # You would also define a toolchain_args variable with at least these set: # current_cpu: current_cpu to pass as a build arg # current_os: current_os to pass as a build arg -template("single_msvc_toolchain") { +template("msvc_toolchain") { toolchain(target_name) { # When invoking this toolchain not as the default one, these args will be # passed to the build. They are ignored when this is the default toolchain. @@ -46,9 +45,6 @@ template("single_msvc_toolchain") { # This value needs to be passed through unchanged. host_toolchain = host_toolchain - - # This value needs to be passed through unchanged. - host_toolchain_no_sanitizers = host_toolchain_no_sanitizers } if (defined(toolchain_args.is_clang)) { @@ -116,6 +112,10 @@ template("single_msvc_toolchain") { # lld-link includes a replacement for lib.exe that can produce thin # archives and understands bitcode (for lto builds). link = "${_clang_bin_path}/lld-link${_exe}" + cc_linkflags = "" + if (toolchain_has_rust) { + rust_linkflags = "" + } if (host_os == "win") { # Flip the slashes so that copy/paste of the commands works. link = string_replace(link, "/", "\\") @@ -123,11 +123,18 @@ template("single_msvc_toolchain") { lib = "$link /lib" if (host_os != "win") { # See comment adding --rsp-quoting to $cl above for more information. - link = "$link --rsp-quoting=posix" + cc_linkflags += " --rsp-quoting=posix" + if (toolchain_has_rust) { + rust_linkflags += " -Clink-arg=--rsp-quoting=posix" + } } } else { lib = "lib.exe" link = "link.exe" + cc_linkflags = "" + if (toolchain_has_rust) { + rust_linkflags = "" + } } # If possible, pass system includes as flags to the compiler. When that's @@ -147,13 +154,31 @@ template("single_msvc_toolchain") { if (host_os != "win" || (use_lld && defined(invoker.sys_lib_flags))) { linker_wrapper = "" - sys_lib_flags = "${invoker.sys_lib_flags} " # Note trailing space. + sys_lib_flags = "${invoker.sys_lib_flags}" + + # TODO(thakis): Remove once crbug.com/1300005 is fixed + assert(toolchain_args.current_cpu == "x64" || + toolchain_args.current_cpu == "x86" || + toolchain_args.current_cpu == "arm" || + toolchain_args.current_cpu == "arm64", + "Only supports x64, x86, arm and arm64 CPUs") + if (toolchain_args.current_cpu == "x64") { + sys_lib_flags += " /MACHINE:X64" + } else if (toolchain_args.current_cpu == "x86") { + sys_lib_flags += " /MACHINE:X86" + } else if (toolchain_args.current_cpu == "arm") { + sys_lib_flags += " /MACHINE:ARM" + } else if (toolchain_args.current_cpu == "arm64") { + sys_lib_flags += " /MACHINE:ARM64" + } + + sys_lib_flags += " " # Note trailing space. } else { # link.exe must be run under a wrapper to set up the environment # (it needs %LIB% set to find libraries), and to work around its bugs. # Note trailing space: linker_wrapper = - "$python_path $_tool_wrapper_path link-wrapper $env False " + "\"$python_path\" $_tool_wrapper_path link-wrapper $env False " sys_lib_flags = "" } @@ -184,7 +209,7 @@ template("single_msvc_toolchain") { rebase_path(toolchain_coverage_instrumentation_input_file, root_build_dir) } - coverage_wrapper = "$python_path " + coverage_wrapper + " " + coverage_wrapper = "\"$python_path\" " + coverage_wrapper + " " } else { coverage_wrapper = "" } @@ -234,7 +259,7 @@ template("single_msvc_toolchain") { } tool("rc") { - command = "$python_path $_tool_wrapper_path rc-wrapper $env rc.exe /nologo $sys_include_flags{{defines}} {{include_dirs}} /fo{{output}} {{source}}" + command = "\"$python_path\" $_tool_wrapper_path rc-wrapper $env rc.exe /nologo $sys_include_flags{{defines}} {{include_dirs}} /fo{{output}} {{source}}" depsformat = "msvc" outputs = [ "$object_subdir/{{source_name_part}}.res" ] description = "RC {{output}}" @@ -245,7 +270,7 @@ template("single_msvc_toolchain") { if (toolchain_args.current_cpu == "arm64") { if (toolchain_is_clang) { - ml = "${cl_prefix}${_clang_bin_path}/clang-cl${_exe} --target=arm64-windows" + ml = "${cl_prefix}${_clang_bin_path}/clang-cl${_exe} --target=aarch64-pc-windows" if (host_os == "win") { # Flip the slashes so that copy/paste of the command works. ml = string_replace(ml, "/", "\\") @@ -288,17 +313,17 @@ template("single_msvc_toolchain") { # It's lld only because the script zaps obj Timestamp which # link.exe /incremental looks at. ml_py = rebase_path("//build/toolchain/win/ml.py", root_build_dir) - ml = "$python_path $ml_py $ml" + ml = "\"$python_path\" $ml_py $ml" } } if (toolchain_args.current_cpu != "arm64" || toolchain_is_clang) { # TODO(thakis): Stop using asm-wrapper when using clang. - command = "$python_path $_tool_wrapper_path asm-wrapper $env $ml {{defines}} {{include_dirs}} {{asmflags}} {{source}}" + command = "\"$python_path\" $_tool_wrapper_path asm-wrapper $env $ml {{defines}} {{include_dirs}} {{asmflags}} {{source}}" } else { # armasm64.exe does not support definitions passed via the command # line. (Fortunately, they're not needed for compiling the V8 # snapshot, which is the only time this assembler is required.) - command = "$python_path $_tool_wrapper_path asm-wrapper $env $ml {{include_dirs}} {{asmflags}} {{source}}" + command = "\"$python_path\" $_tool_wrapper_path asm-wrapper $env $ml {{include_dirs}} {{asmflags}} {{source}}" } description = "ASM {{output}}" @@ -306,73 +331,149 @@ template("single_msvc_toolchain") { } if (toolchain_has_rust) { - rustc_wrapper = rebase_path("//build/rust/rustc_wrapper.py") - rustc = rebase_path("${rust_sysroot}/bin/rustc", root_build_dir) - rust_sysroot_relative_to_out = rebase_path(rust_sysroot, root_out_dir) - rustc_windows_args = " -Clinker=$link $rustc_common_args" + rust_sysroot_relative = rebase_path(rust_sysroot, root_build_dir) + rustc = "$rust_sysroot_relative/bin/rustc" + rustc_wrapper = + rebase_path("//build/rust/rustc_wrapper.py", root_build_dir) + rustc_windows_args = " -Clinker=$link$rust_linkflags $rustc_common_args" tool("rust_staticlib") { - rust_outfile = "{{output_dir}}/{{target_output_name}}.lib" - depfile = "{{output}}.d" - rspfile = "$rust_outfile.rsp" - rspfile_content = "{{rustdeps}} {{externs}}" - command = "$python_path \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- $rustc_windows_args --emit=dep-info=$depfile,link -o $rust_outfile LDFLAGS RUSTENV {{rustenv}}" - description = "RUST $rust_outfile" - rust_sysroot = rust_sysroot_relative_to_out - outputs = [ rust_outfile ] + libname = "{{output_dir}}/{{target_output_name}}{{output_extension}}" + rspfile = "$libname.rsp" + depfile = "$libname.d" + + default_output_extension = ".lib" + output_prefix = "lib" + default_output_dir = "{{root_out_dir}}" + description = "RUST(STATICLIB) {{output}}" + outputs = [ libname ] + + rspfile_content = "{{rustdeps}} {{externs}} SOURCES {{sources}}" + command = "\"$python_path\" \"$rustc_wrapper\" --target-windows --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- $rustc_windows_args --emit=dep-info=$depfile,link -o $libname LDFLAGS RUSTENV {{rustenv}}" + rust_sysroot = rust_sysroot_relative } tool("rust_rlib") { - rust_outfile = "{{output_dir}}/lib{{target_output_name}}.rlib" - depfile = "{{output}}.d" - - # Do not use rsp files in this (common) case because they occupy the - # ninja main thread, and {{rlibs}} have shorter command lines than - # fully linked targets. - command = "$python_path \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile -- $rustc_windows_args --emit=dep-info=$depfile,link -o $rust_outfile {{rustdeps}} {{externs}} LDFLAGS RUSTENV {{rustenv}}" - description = "RUST $rust_outfile" - rust_sysroot = rust_sysroot_relative_to_out - outputs = [ rust_outfile ] + # We must always prefix with `lib` even if the library already starts + # with that prefix or else our stdlib is unable to find libc.rlib (or + # actually liblibc.rlib). + rlibname = + "{{output_dir}}/lib{{target_output_name}}{{output_extension}}" + rspfile = "$rlibname.rsp" + depfile = "$rlibname.d" + + default_output_extension = ".rlib" + + # This is prefixed unconditionally in `rlibname`. + # output_prefix = "lib" + default_output_dir = "{{root_out_dir}}" + description = "RUST {{output}}" + outputs = [ rlibname ] + + rspfile_content = "{{rustdeps}} {{externs}} SOURCES {{sources}}" + command = "\"$python_path\" \"$rustc_wrapper\" --target-windows --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- $rustc_windows_args --emit=dep-info=$depfile,link -o $rlibname {{rustdeps}} {{externs}} LDFLAGS RUSTENV {{rustenv}}" + rust_sysroot = rust_sysroot_relative } tool("rust_bin") { - rust_outfile = "{{root_out_dir}}/{{target_output_name}}.exe" - depfile = "{{output}}.d" - rspfile = "$rust_outfile.rsp" - rspfile_content = "{{rustdeps}} {{externs}}" - command = "$python_path \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- $rustc_windows_args --emit=dep-info=$depfile,link -o $rust_outfile LDFLAGS {{ldflags}} $sys_lib_flags RUSTENV {{rustenv}}" - description = "RUST $rust_outfile" - rust_sysroot = rust_sysroot_relative_to_out - outputs = [ rust_outfile ] + exename = "{{output_dir}}/{{target_output_name}}{{output_extension}}" + pdbname = "$exename.pdb" + rspfile = "$exename.rsp" + depfile = "$exename.d" + pool = "//build/toolchain:link_pool($default_toolchain)" + + default_output_extension = ".exe" + default_output_dir = "{{root_out_dir}}" + description = "RUST(BIN) {{output}}" + outputs = [ + # The first entry here is used for dependency tracking. + exename, + pdbname, + ] + runtime_outputs = outputs + + rspfile_content = "{{rustdeps}} {{externs}} SOURCES {{sources}}" + dynamic_link_switch = "" + command = "\"$python_path\" \"$rustc_wrapper\" --target-windows --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- $rustc_windows_args --emit=dep-info=$depfile,link -o $exename LDFLAGS {{ldflags}} $sys_lib_flags /PDB:$pdbname RUSTENV {{rustenv}}" + rust_sysroot = rust_sysroot_relative } tool("rust_cdylib") { - rust_outfile = "{{output_dir}}/lib{{target_output_name}}.dll" - depfile = "{{output}}.d" - rspfile = "$rust_outfile.rsp" - rspfile_content = "{{rustdeps}} {{externs}}" - command = "$python_path \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- $rustc_windows_args --emit=dep-info=$depfile,link -o $rust_outfile LDFLAGS {{ldflags}} $sys_lib_flags RUSTENV {{rustenv}}" - description = "RUST $rust_outfile" - rust_sysroot = rust_sysroot_relative_to_out - outputs = [ rust_outfile ] + # E.g. "foo.dll": + dllname = "{{output_dir}}/{{target_output_name}}{{output_extension}}" + libname = "$dllname.lib" # e.g. foo.dll.lib + pdbname = "$dllname.pdb" + rspfile = "$dllname.rsp" + depfile = "$dllname.d" + pool = "//build/toolchain:link_pool($default_toolchain)" + + default_output_extension = ".dll" + default_output_dir = "{{root_out_dir}}" + description = "RUST(CDYLIB) {{output}}" + outputs = [ + # The first entry here is used for dependency tracking. Dylibs are + # linked into other targets and that linking must be done through + # the .lib file, not the .dll file. So the .lib file is the primary + # output here. + libname, + dllname, + pdbname, + ] + runtime_outputs = [ + dllname, + pdbname, + ] + + rspfile_content = "{{rustdeps}} {{externs}} SOURCES {{sources}}" + dynamic_link_switch = "" + command = "\"$python_path\" \"$rustc_wrapper\" --target-windows --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- $rustc_windows_args --emit=dep-info=$depfile,link -o $dllname LDFLAGS {{ldflags}} $sys_lib_flags /PDB:$pdbname /IMPLIB:$libname RUSTENV {{rustenv}}" + rust_sysroot = rust_sysroot_relative + + # Since the above commands only updates the .lib file when it changes, + # ask Ninja to check if the timestamp actually changed to know if + # downstream dependencies should be recompiled. + restat = true } tool("rust_macro") { - rust_outfile = "{{output_dir}}/{{target_output_name}}.dll" - depfile = "{{output}}.d" - rspfile = "$rust_outfile.rsp" - rspfile_content = "{{rustdeps}} {{externs}}" - command = "$python_path \"$rustc_wrapper\" --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- $rustc_windows_args --emit=dep-info=$depfile,link -o $rust_outfile LDFLAGS {{ldflags}} $sys_lib_flags RUSTENV {{rustenv}}" - description = "RUST $rust_outfile" - rust_sysroot = rust_sysroot_relative_to_out - outputs = [ rust_outfile ] + # E.g. "foo.dll": + dllname = "{{output_dir}}/{{target_output_name}}{{output_extension}}" + pdbname = "$dllname.pdb" + rspfile = "$dllname.rsp" + depfile = "$dllname.d" + pool = "//build/toolchain:link_pool($default_toolchain)" + + default_output_extension = ".dll" + default_output_dir = "{{root_out_dir}}" + description = "RUST(MACRO) {{output}}" + outputs = [ + # The first entry here is used for dependency tracking. Proc macros + # are consumed as dlls directly, loaded a runtime, so the dll is the + # primary output here. If we make a .lib file the primary output, we + # end up trying to load the .lib file as a procmacro which fails. + # + # Since depending on a macro target for linking would fail (it would + # try to link primary .dll target) we omit the .lib here entirely. + dllname, + pdbname, + ] + runtime_outputs = outputs + + rspfile_content = "{{rustdeps}} {{externs}} SOURCES {{sources}}" + dynamic_link_switch = "" + command = "\"$python_path\" \"$rustc_wrapper\" --target-windows --rustc=$rustc --depfile=$depfile --rsp=$rspfile -- $rustc_windows_args --emit=dep-info=$depfile,link -o $dllname LDFLAGS {{ldflags}} $sys_lib_flags /PDB:$pdbname RUSTENV {{rustenv}}" + rust_sysroot = rust_sysroot_relative + + # Since the above commands only updates the .lib file when it changes, + # ask Ninja to check if the timestamp actually changed to know if + # downstream dependencies should be recompiled. + restat = true } } tool("alink") { rspfile = "{{output}}.rsp" - command = - "$linker_wrapper$lib /OUT:{{output}} /nologo {{arflags}} @$rspfile" + command = "$linker_wrapper$lib \"/OUT:{{output}}\" /nologo {{arflags}} \"@$rspfile\"" description = "LIB {{output}}" outputs = [ # Ignore {{output_extension}} and always use .lib, there's no reason to @@ -395,7 +496,7 @@ template("single_msvc_toolchain") { rspfile = "${dllname}.rsp" pool = "//build/toolchain:link_pool($default_toolchain)" - command = "$linker_wrapper$link /OUT:$dllname /nologo ${sys_lib_flags}/IMPLIB:$libname /DLL /PDB:$pdbname @$rspfile" + command = "$linker_wrapper$link$cc_linkflags \"/OUT:$dllname\" /nologo ${sys_lib_flags} \"/IMPLIB:$libname\" /DLL \"/PDB:$pdbname\" \"@$rspfile\"" default_output_extension = ".dll" default_output_dir = "{{root_out_dir}}" @@ -430,7 +531,7 @@ template("single_msvc_toolchain") { rspfile = "${dllname}.rsp" pool = "//build/toolchain:link_pool($default_toolchain)" - command = "$linker_wrapper$link /OUT:$dllname /nologo ${sys_lib_flags}/DLL /PDB:$pdbname @$rspfile" + command = "$linker_wrapper$link$cc_linkflags \"/OUT:$dllname\" /nologo ${sys_lib_flags} /DLL \"/PDB:$pdbname\" \"@$rspfile\"" default_output_extension = ".dll" default_output_dir = "{{root_out_dir}}" @@ -453,7 +554,7 @@ template("single_msvc_toolchain") { rspfile = "$exename.rsp" pool = "//build/toolchain:link_pool($default_toolchain)" - command = "$linker_wrapper$link /OUT:$exename /nologo ${sys_lib_flags} /PDB:$pdbname @$rspfile" + command = "$linker_wrapper$link$cc_linkflags \"/OUT:$exename\" /nologo ${sys_lib_flags} \"/PDB:$pdbname\" \"@$rspfile\"" default_output_extension = ".exe" default_output_dir = "{{root_out_dir}}" @@ -490,58 +591,79 @@ template("single_msvc_toolchain") { } } -# Makes a single MSVC toolchain, or possibly two if we -# need an additional toolchain without sanitizers enabled. -template("msvc_toolchain") { - single_msvc_toolchain(target_name) { - assert(defined(invoker.toolchain_args), - "Toolchains must declare toolchain_args") - forward_variables_from(invoker, - "*", - [ - "visibility", - "test_only", - ]) - - # No need to forward visibility and test_only as they apply to targets not - # toolchains, but presubmit checks require that we explicitly exclude them - } - - if (using_sanitizer) { - # Make an additional toolchain with no sanitizers. - single_msvc_toolchain("${target_name}_no_sanitizers") { - assert(defined(invoker.toolchain_args), - "Toolchains must declare toolchain_args") +template("msvc_rust_host_build_tools_toolchain") { + assert(defined(invoker.toolchain_args)) + if (enable_rust) { + msvc_toolchain("${target_name}_for_rust_host_build_tools") { forward_variables_from(invoker, "*", [ "toolchain_args", "visibility", - "test_only", + "testonly", ]) toolchain_args = { # Populate toolchain args from the invoker. forward_variables_from(invoker.toolchain_args, "*") - toolchain_disables_sanitizers = true + toolchain_for_rust_host_build_tools = true + + # The host build tools are static release builds to make the Chromium + # build faster. They do not need PGO etc, so no official builds. + is_debug = false + is_component_build = false + is_official_build = false + use_clang_coverage = false + use_sanitizer_coverage = false + generate_linker_map = false } } + } else { + not_needed(invoker, "*") + not_needed([ "target_name" ]) } } template("win_toolchains") { + # On Windows, cross-compile for x86 changes the `host_toolchain` + # into x86 too so as to avoid compiling things twice (see + # //build/config/BUILDCONFIG.gn). But the prebuilt stdlib does not + # exist for Windows x86 and it's exceedingly difficult to get it + # built from a single build_rust.py invocation. So we just don't follow + # along in the `msvc_rust_host_build_tools_toolchain` toolchains, and + # always use the host cpu type (which will be x64 in that case). Things + # built with these toolchains are never built for the target_cpu anyhow, + # so the optimization there does not benefit them. + # + # Thus, in msvc_rust_host_build_tools_toolchain: + # * Use `rust_host_toolchain_arch` instead of `toolchain_arch`. + # * Use `rust_host_win_toolchain_data` instead of `win_toolchain_data`. + assert(defined(invoker.toolchain_arch)) toolchain_arch = invoker.toolchain_arch + rust_host_toolchain_arch = host_cpu + + # The toolchain data for `msvc_toolchain()`. + if (toolchain_arch == "x86") { + win_toolchain_data = win_toolchain_data_x86 + } else if (toolchain_arch == "x64") { + win_toolchain_data = win_toolchain_data_x64 + } else if (toolchain_arch == "arm64") { + win_toolchain_data = win_toolchain_data_arm64 + } else { + error("Unsupported toolchain_arch, add it to win_toolchain_data.gni") + } - win_toolchain_data = exec_script("//build/toolchain/win/setup_toolchain.py", - [ - visual_studio_path, - windows_sdk_path, - visual_studio_runtime_dirs, - "win", - toolchain_arch, - "environment." + toolchain_arch, - ], - "scope") + # The toolchain data for `msvc_rust_host_build_tools_toolchain()`. + if (rust_host_toolchain_arch == "x86") { + rust_host_win_toolchain_data = win_toolchain_data_x86 + } else if (rust_host_toolchain_arch == "x64") { + rust_host_win_toolchain_data = win_toolchain_data_x64 + } else if (rust_host_toolchain_arch == "arm64") { + rust_host_win_toolchain_data = win_toolchain_data_arm64 + } else { + error( + "Unsupported rust_host_toolchain_arch, add it to win_toolchain_data.gni") + } # The toolchain using MSVC only makes sense when not doing cross builds. # Chromium exclusively uses the win_clang_ toolchain below, but V8 and @@ -566,6 +688,20 @@ template("win_toolchains") { current_cpu = toolchain_arch } } + msvc_rust_host_build_tools_toolchain(cl_toolchain_prefix + target_name) { + environment = "environment." + rust_host_toolchain_arch + cl = "\"${rust_host_win_toolchain_data.vc_bin_dir}/cl.exe\"" + + 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 = rust_host_toolchain_arch + } + } } if (defined(invoker.clang_toolchain_prefix)) { @@ -573,35 +709,42 @@ template("win_toolchains") { } else { clang_toolchain_prefix = "win_clang_" } + + _clang_lib_dir = + rebase_path("$clang_base_path/lib/clang/$clang_version/lib/windows", + root_build_dir) + if (host_os == "win") { + # And to match the other -libpath flags. + _clang_lib_dir = string_replace(_clang_lib_dir, "/", "\\") + } + msvc_toolchain(clang_toolchain_prefix + target_name) { environment = "environment." + toolchain_arch cl = "${_clang_bin_path}/clang-cl${_exe}" - _clang_lib_dir = - rebase_path("$clang_base_path/lib/clang/$clang_version/lib/windows", - root_build_dir) - if (host_os == "win") { - # And to match the other -libpath flags. - _clang_lib_dir = string_replace(_clang_lib_dir, "/", "\\") - } sys_include_flags = "${win_toolchain_data.include_flags_imsvc}" if (use_lld) { - sys_lib_flags = - "-libpath:$_clang_lib_dir ${win_toolchain_data.libpath_lldlink_flags}" + sys_lib_flags = "-libpath:$_clang_lib_dir " + + "${win_toolchain_data.libpath_lldlink_flags}" + } - # TODO(thakis): Remove once crbug.com/1300005 is fixed - assert(toolchain_arch == "x64" || toolchain_arch == "x86" || - toolchain_arch == "arm" || toolchain_arch == "arm64", - "Only supports x64, x86, arm and arm64 CPUs") - if (toolchain_arch == "x64") { - sys_lib_flags += " /MACHINE:X64" - } else if (toolchain_arch == "x86") { - sys_lib_flags += " /MACHINE:X86" - } else if (toolchain_arch == "arm") { - sys_lib_flags += " /MACHINE:ARM" - } else if (toolchain_arch == "arm64") { - sys_lib_flags += " /MACHINE:ARM64" + toolchain_args = { + if (defined(invoker.toolchain_args)) { + forward_variables_from(invoker.toolchain_args, "*") } + is_clang = true + current_os = "win" + current_cpu = toolchain_arch + } + } + msvc_rust_host_build_tools_toolchain(clang_toolchain_prefix + target_name) { + environment = "environment." + rust_host_toolchain_arch + cl = "${_clang_bin_path}/clang-cl${_exe}" + + sys_include_flags = "${rust_host_win_toolchain_data.include_flags_imsvc}" + if (use_lld) { + sys_lib_flags = "-libpath:$_clang_lib_dir " + + "${rust_host_win_toolchain_data.libpath_lldlink_flags}" } toolchain_args = { @@ -610,7 +753,7 @@ template("win_toolchains") { } is_clang = true current_os = "win" - current_cpu = toolchain_arch + current_cpu = rust_host_toolchain_arch } } } diff --git a/build/toolchain/win/win_toolchain_data.gni b/build/toolchain/win/win_toolchain_data.gni new file mode 100644 index 0000000..a6e8328 --- /dev/null +++ b/build/toolchain/win/win_toolchain_data.gni @@ -0,0 +1,44 @@ +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/config/win/visual_studio_version.gni") + +declare_args() { + win_toolchain_data_x86 = + exec_script("//build/toolchain/win/setup_toolchain.py", + [ + visual_studio_path, + windows_sdk_path, + visual_studio_runtime_dirs, + "win", + "x86", + "environment.x86", + ], + "scope") + + win_toolchain_data_x64 = + exec_script("//build/toolchain/win/setup_toolchain.py", + [ + visual_studio_path, + windows_sdk_path, + visual_studio_runtime_dirs, + "win", + "x64", + "environment.x64", + ], + "scope") + if (target_cpu == "arm64" || host_cpu == "arm64") { + win_toolchain_data_arm64 = + exec_script("//build/toolchain/win/setup_toolchain.py", + [ + visual_studio_path, + windows_sdk_path, + visual_studio_runtime_dirs, + "win", + "arm64", + "environment.arm64", + ], + "scope") + } +} diff --git a/build/toolchain/wrapper_utils.py b/build/toolchain/wrapper_utils.py index 5c62b6a..f01e159 100644 --- a/build/toolchain/wrapper_utils.py +++ b/build/toolchain/wrapper_utils.py @@ -13,6 +13,8 @@ import sys import threading +import whole_archive + _BAT_PREFIX = 'cmd /c call ' @@ -72,43 +74,7 @@ def RunLinkWithOptionalMapFile(command, env=None, map_file=None): # We want to link rlibs as --whole-archive if they are part of a unit test # target. This is determined by switch `-LinkWrapper,add-whole-archive`. - # - # TODO(danakj): If the linking command line gets too large we could move - # {{rlibs}} into the rsp file, but then this script needs to modify the rsp - # file instead of the command line. - def extract_libname(s): - m = re.match(r'-LinkWrapper,add-whole-archive=(.+)', s) - return m.group(1) + ".rlib" - - # The set of libraries we want to apply `--whole-archive`` to. - whole_archive_libs = [ - extract_libname(x) for x in command - if x.startswith("-LinkWrapper,add-whole-archive=") - ] - - # Remove the arguments meant for consumption by this LinkWrapper script. - command = [x for x in command if not x.startswith("-LinkWrapper,")] - - def has_any_suffix(string, suffixes): - for suffix in suffixes: - if string.endswith(suffix): - return True - return False - - def wrap_libs_with(command, libnames, before, after): - out = [] - for arg in command: - # The arg is a full path to a library, we look if the the library name (a - # suffix of the full arg) is one of `libnames`. - if has_any_suffix(arg, libnames): - out.extend([before, arg, after]) - else: - out.append(arg) - return out - - # Apply --whole-archive to the libraries that desire it. - command = wrap_libs_with(command, whole_archive_libs, "-Wl,--whole-archive", - "-Wl,--no-whole-archive") + command = whole_archive.wrap_with_whole_archive(command) result = subprocess.call(command, env=env) diff --git a/build/util/LASTCHANGE b/build/util/LASTCHANGE index 597ce3f..b842661 100644 --- a/build/util/LASTCHANGE +++ b/build/util/LASTCHANGE @@ -1,2 +1,2 @@ -LASTCHANGE=a90a506555c938a18b63b27b61d0eaa53effaaa2-refs/branch-heads/5518@{#1} +LASTCHANGE=2d662a1dbdfff9eb44e08ea4c93b31d25e5557be-refs/branch-heads/5949@{#1} LASTCHANGE_YEAR=2023 diff --git a/build/util/LASTCHANGE.committime b/build/util/LASTCHANGE.committime index 685aac6..4281dca 100644 --- a/build/util/LASTCHANGE.committime +++ b/build/util/LASTCHANGE.committime @@ -1 +1 @@ -1672805694 \ No newline at end of file +1692068681 \ No newline at end of file diff --git a/build/util/PRESUBMIT.py b/build/util/PRESUBMIT.py index 88fd9bf..22376c3 100644 --- a/build/util/PRESUBMIT.py +++ b/build/util/PRESUBMIT.py @@ -6,7 +6,6 @@ """Presubmit for build/util""" -USE_PYTHON3 = True def _GetFilesToSkip(input_api): @@ -40,10 +39,7 @@ def _GetPythonUnitTests(input_api, output_api): output_api, input_api.PresubmitLocalPath(), files_to_check=['.*_test\\.py$'], - files_to_skip=files_to_skip, - run_on_python2=False, - run_on_python3=True, - skip_shebang_check=True) + files_to_skip=files_to_skip) def CommonChecks(input_api, output_api): diff --git a/build/util/android_chrome_version.py b/build/util/android_chrome_version.py index 876f485..16cf8d0 100755 --- a/build/util/android_chrome_version.py +++ b/build/util/android_chrome_version.py @@ -91,6 +91,16 @@ ('WEBVIEW_DEV', 'WEBVIEW_DEV', '32'), ], '64': [ + ('CHROME', 'CHROME', '64'), + ('CHROME_MODERN', 'CHROME_MODERN', '64'), + ('MONOCHROME', 'MONOCHROME', '64'), + ('TRICHROME', 'TRICHROME', '64'), + ('TRICHROME_BETA', 'TRICHROME_BETA', '64'), + ('WEBVIEW_STABLE', 'WEBVIEW_STABLE', '64'), + ('WEBVIEW_BETA', 'WEBVIEW_BETA', '64'), + ('WEBVIEW_DEV', 'WEBVIEW_DEV', '64'), + ], + 'hybrid': [ ('CHROME', 'CHROME', '64'), ('CHROME_MODERN', 'CHROME_MODERN', '64'), ('MONOCHROME', 'MONOCHROME', '32_64'), @@ -104,16 +114,14 @@ ('TRICHROME_64_32', 'TRICHROME', '64_32'), ('TRICHROME_64_32_HIGH', 'TRICHROME', '64_32_high'), ('TRICHROME_64', 'TRICHROME', '64'), - ('TRICHROME_64_HIGH', 'TRICHROME', '64_32_high'), # Deprecated. ('TRICHROME_AUTO_64_32', 'TRICHROME_AUTO', '64_32'), + ('TRICHROME_AUTO_64_32_HIGH', 'TRICHROME_AUTO', '64_32_high'), ('TRICHROME_BETA', 'TRICHROME_BETA', '32_64'), ('TRICHROME_32_BETA', 'TRICHROME_BETA', '32'), ('TRICHROME_32_64_BETA', 'TRICHROME_BETA', '32_64'), ('TRICHROME_64_32_BETA', 'TRICHROME_BETA', '64_32'), ('TRICHROME_64_32_HIGH_BETA', 'TRICHROME_BETA', '64_32_high'), ('TRICHROME_64_BETA', 'TRICHROME_BETA', '64'), - # Deprecated - ('TRICHROME_64_HIGH_BETA', 'TRICHROME_BETA', '64_32_high'), ('WEBVIEW_STABLE', 'WEBVIEW_STABLE', '32_64'), ('WEBVIEW_BETA', 'WEBVIEW_BETA', '32_64'), ('WEBVIEW_DEV', 'WEBVIEW_DEV', '32_64'), @@ -129,9 +137,12 @@ # Splits input build config architecture to manufacturer and bitness. _ARCH_TO_MFG_AND_BITNESS = { 'arm': ('arm', '32'), - 'arm64': ('arm', '64'), + 'arm64': ('arm', 'hybrid'), + # Until riscv64 needs a unique version code to ship APKs to the store, + # point to the 'arm' bitmask. + 'riscv64': ('arm', '64'), 'x86': ('intel', '32'), - 'x64': ('intel', '64'), + 'x64': ('intel', 'hybrid'), } # Expose the available choices to other scripts. @@ -175,21 +186,55 @@ version needs to be a higher versionCode, as otherwise a 64-bit device would prefer the 32-bit version that does not include any 64-bit code, and fail. """ -_ABIS_TO_DIGIT_MASK = { - 'arm': { - '32': 0, - '32_64': 3, - '64_32': 4, - '64': 5, - '64_32_high': 9, - }, - 'intel': { - '32': 1, - '32_64': 6, - '64_32': 7, - '64': 8, - }, -} + + +def _GetAbisToDigitMask(build_number, patch_number): + """Return the correct digit mask based on build number. + + Updated from build 5750: Some intel devices advertise support for arm, + so arm codes must be lower than x86 codes to prevent providing an + arm-optimized build to intel devices. + + Returns: + A dictionary of architecture mapped to bitness + mapped to version code suffix. + """ + # Scheme change was made directly to M113 and M114 branches. + use_new_scheme = (build_number >= 5750 + or (build_number == 5672 and patch_number >= 176) + or (build_number == 5735 and patch_number >= 53)) + if use_new_scheme: + return { + 'arm': { + '32': 0, + '32_64': 1, + '64_32': 2, + '64_32_high': 3, + '64': 4, + }, + 'intel': { + '32': 6, + '32_64': 7, + '64_32': 8, + '64': 9, + }, + } + return { + 'arm': { + '32': 0, + '32_64': 3, + '64_32': 4, + '64': 5, + '64_32_high': 9, + }, + 'intel': { + '32': 1, + '32_64': 6, + '64_32': 7, + '64': 8, + }, + } + VersionCodeComponents = namedtuple('VersionCodeComponents', [ 'build_number', @@ -249,7 +294,8 @@ def TranslateVersionCode(version_code, is_webview=False): package_name = package break - for arch, bitness_to_number in _ABIS_TO_DIGIT_MASK.items(): + for arch, bitness_to_number in (_GetAbisToDigitMask(build_number, + patch_number).items()): for bitness, number in bitness_to_number.items(): if abi_digit == number: abi = arch if arch != 'intel' else 'x86' @@ -285,8 +331,9 @@ def GenerateVersionCodes(version_values, arch, is_next_build): Thus, this method is responsible for the final two digits of versionCode. """ - base_version_code = int( - '%s%03d00' % (version_values['BUILD'], int(version_values['PATCH']))) + build_number = int(version_values['BUILD']) + patch_number = int(version_values['PATCH']) + base_version_code = (build_number * 1000 + patch_number) * 100 if is_next_build: base_version_code += _NEXT_BUILD_VERSION_CODE_DIFF @@ -295,10 +342,11 @@ def GenerateVersionCodes(version_values, arch, is_next_build): version_codes = {} + abi_to_digit_mask = _GetAbisToDigitMask(build_number, patch_number) for apk, package, abis in _APKS[bitness]: if abis == '64_32_high' and arch != 'arm64': continue - abi_part = _ABIS_TO_DIGIT_MASK[mfg][abis] + abi_part = abi_to_digit_mask[mfg][abis] package_part = _PACKAGE_NAMES[package] version_code_name = apk + '_VERSION_CODE' diff --git a/build/util/android_chrome_version_test.py b/build/util/android_chrome_version_test.py index f1f7505..a28e5c6 100644 --- a/build/util/android_chrome_version_test.py +++ b/build/util/android_chrome_version_test.py @@ -14,6 +14,13 @@ 'PATCH': '0', } +EXAMPLE_GROUPED_VERSION_VALUES = { + 'MAJOR': '99', + 'MINOR': '0', + 'BUILD': '5750', + 'PATCH': '0', +} + class _VersionTest(unittest.TestCase): """Unittests for the android_chrome_version module. @@ -170,7 +177,7 @@ def testGenerateVersionCodesAndroidArchArm64Variants(self): arch_trichrome_32_64_version_code = output['TRICHROME_32_64_VERSION_CODE'] arch_trichrome_64_32_version_code = output['TRICHROME_64_32_VERSION_CODE'] arch_trichrome_64_32_high_version_code = output[ - 'TRICHROME_64_HIGH_VERSION_CODE'] + 'TRICHROME_64_32_HIGH_VERSION_CODE'] arch_trichrome_64_version_code = output['TRICHROME_64_VERSION_CODE'] arch_trichrome_auto_64_32_version_code = output[ 'TRICHROME_AUTO_64_32_VERSION_CODE'] @@ -340,6 +347,396 @@ def testGenerateVersionCodesTrichromeChannelOrderBeta(self): trichrome_stable_version_code) +class _VersionGroupedTest(unittest.TestCase): + """Unittests for the android_chrome_version module (grouped). + """ + def testGenerateVersionCodesAndroidChrome(self): + """Assert it gives correct values for standard/example inputs""" + output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='arm', + is_next_build=False) + + chrome_version_code = output['CHROME_VERSION_CODE'] + + self.assertEqual(chrome_version_code, '575000000') + + def testGenerateVersionCodesAndroidChromeModern(self): + """Assert it gives correct values for standard/example inputs""" + output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='arm', + is_next_build=False) + + chrome_modern_version_code = output['CHROME_MODERN_VERSION_CODE'] + + self.assertEqual(chrome_modern_version_code, '575000010') + + def testGenerateVersionCodesAndroidMonochrome(self): + """Assert it gives correct values for standard/example inputs""" + output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='arm', + is_next_build=False) + + monochrome_version_code = output['MONOCHROME_VERSION_CODE'] + + self.assertEqual(monochrome_version_code, '575000020') + + def testGenerateVersionCodesAndroidTrichrome(self): + """Assert it gives correct values for standard/example inputs""" + output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='arm', + is_next_build=False) + + trichrome_version_code = output['TRICHROME_VERSION_CODE'] + + self.assertEqual(trichrome_version_code, '575000030') + + def testGenerateVersionCodesAndroidWebviewStable(self): + """Assert it gives correct values for standard/example inputs""" + output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='arm', + is_next_build=False) + + webview_stable_version_code = output['WEBVIEW_STABLE_VERSION_CODE'] + + self.assertEqual(webview_stable_version_code, '575000000') + + def testGenerateVersionCodesAndroidWebviewBeta(self): + """Assert it gives correct values for standard/example inputs""" + output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='arm', + is_next_build=False) + + webview_beta_version_code = output['WEBVIEW_BETA_VERSION_CODE'] + + self.assertEqual(webview_beta_version_code, '575000010') + + def testGenerateVersionCodesAndroidWebviewDev(self): + """Assert it gives correct values for standard/example inputs""" + output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='arm', + is_next_build=False) + + webview_dev_version_code = output['WEBVIEW_DEV_VERSION_CODE'] + + self.assertEqual(webview_dev_version_code, '575000020') + + def testGenerateVersionCodesAndroidNextBuild(self): + """Assert it handles "next" builds correctly""" + output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='arm', + is_next_build=True) + + # Get just a sample of values + chrome_version_code = output['CHROME_VERSION_CODE'] + monochrome_version_code = output['MONOCHROME_VERSION_CODE'] + webview_stable_version_code = output['WEBVIEW_STABLE_VERSION_CODE'] + webview_beta_version_code = output['WEBVIEW_BETA_VERSION_CODE'] + + self.assertEqual(chrome_version_code, '575050000') + self.assertEqual(monochrome_version_code, '575050020') + self.assertEqual(webview_stable_version_code, '575050000') + self.assertEqual(webview_beta_version_code, '575050010') + + def testGenerateVersionCodesAndroidArchArm(self): + """Assert it handles different architectures correctly. + + Version codes for different builds need to be distinct and maintain a + certain ordering. + See docs in android_chrome_version._ABIS_TO_BIT_MASK for + reasoning. + """ + output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='arm', + is_next_build=False) + arch_chrome_version_code = output['CHROME_VERSION_CODE'] + + self.assertEqual(arch_chrome_version_code, '575000000') + + def testGenerateVersionCodesAndroidArchX86(self): + """Assert it handles different architectures correctly. + + Version codes for different builds need to be distinct and maintain a + certain ordering. + See docstring on android_chrome_version._ABIS_TO_BIT_MASK for + reasoning. + """ + output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='x86', + is_next_build=False) + arch_chrome_version_code = output['CHROME_VERSION_CODE'] + + self.assertEqual(arch_chrome_version_code, '575000006') + + def testGenerateVersionCodesAndroidArchArm64(self): + """Assert it handles different architectures correctly. + + Version codes for different builds need to be distinct and maintain a + certain ordering. + See docstring on android_chrome_version._ABIS_TO_BIT_MASK for + reasoning. + """ + output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='arm64', + is_next_build=False) + arch_chrome_version_code = output['CHROME_VERSION_CODE'] + + self.assertEqual(arch_chrome_version_code, '575000004') + + def testGenerateVersionCodesAndroidArchArm64Variants(self): + """Assert it handles 64-bit-specific additional version codes correctly. + + Some additional version codes are generated for 64-bit architectures. + See docstring on android_chrome_version.ARCH64_APK_VARIANTS for more info. + """ + output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='arm64', + is_next_build=False) + arch_monochrome_version_code = output['MONOCHROME_VERSION_CODE'] + arch_monochrome_32_version_code = output['MONOCHROME_32_VERSION_CODE'] + arch_monochrome_32_64_version_code = output['MONOCHROME_32_64_VERSION_CODE'] + arch_monochrome_64_32_version_code = output['MONOCHROME_64_32_VERSION_CODE'] + arch_monochrome_64_version_code = output['MONOCHROME_64_VERSION_CODE'] + arch_trichrome_version_code = output['TRICHROME_VERSION_CODE'] + arch_trichrome_32_version_code = output['TRICHROME_32_VERSION_CODE'] + arch_trichrome_32_64_version_code = output['TRICHROME_32_64_VERSION_CODE'] + arch_trichrome_64_32_version_code = output['TRICHROME_64_32_VERSION_CODE'] + arch_trichrome_64_32_high_version_code = output[ + 'TRICHROME_64_32_HIGH_VERSION_CODE'] + arch_trichrome_64_version_code = output['TRICHROME_64_VERSION_CODE'] + arch_trichrome_auto_64_32_version_code = output[ + 'TRICHROME_AUTO_64_32_VERSION_CODE'] + arch_trichrome_auto_64_32_high_version_code = output[ + 'TRICHROME_AUTO_64_32_HIGH_VERSION_CODE'] + + self.assertEqual(arch_monochrome_32_version_code, '575000020') + self.assertEqual(arch_monochrome_32_64_version_code, '575000021') + self.assertEqual(arch_monochrome_version_code, '575000021') + self.assertEqual(arch_monochrome_64_32_version_code, '575000022') + self.assertEqual(arch_monochrome_64_version_code, '575000024') + self.assertEqual(arch_trichrome_32_version_code, '575000030') + self.assertEqual(arch_trichrome_32_64_version_code, '575000031') + self.assertEqual(arch_trichrome_version_code, '575000031') + self.assertEqual(arch_trichrome_64_32_version_code, '575000032') + self.assertEqual(arch_trichrome_64_32_high_version_code, '575000033') + self.assertEqual(arch_trichrome_64_version_code, '575000034') + self.assertEqual(arch_trichrome_auto_64_32_version_code, '575000052') + self.assertEqual(arch_trichrome_auto_64_32_high_version_code, '575000053') + + def testGenerateVersionCodesAndroidArchX64(self): + """Assert it handles different architectures correctly. + + Version codes for different builds need to be distinct and maintain a + certain ordering. + See docstring on android_chrome_version._ABIS_TO_BIT_MASK for + reasoning. + """ + output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='x64', + is_next_build=False) + arch_chrome_version_code = output['CHROME_VERSION_CODE'] + + self.assertEqual(arch_chrome_version_code, '575000009') + + def testGenerateVersionCodesAndroidArchX64Variants(self): + """Assert it handles 64-bit-specific additional version codes correctly. + + Some additional version codes are generated for 64-bit architectures. + See docstring on android_chrome_version.ARCH64_APK_VARIANTS for more info. + """ + output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='x64', + is_next_build=False) + arch_monochrome_32_version_code = output['MONOCHROME_32_VERSION_CODE'] + arch_monochrome_32_64_version_code = output['MONOCHROME_32_64_VERSION_CODE'] + arch_monochrome_version_code = output['MONOCHROME_VERSION_CODE'] + arch_monochrome_64_32_version_code = output['MONOCHROME_64_32_VERSION_CODE'] + arch_monochrome_64_version_code = output['MONOCHROME_64_VERSION_CODE'] + arch_trichrome_32_version_code = output['TRICHROME_32_VERSION_CODE'] + arch_trichrome_32_64_version_code = output['TRICHROME_32_64_VERSION_CODE'] + arch_trichrome_version_code = output['TRICHROME_VERSION_CODE'] + arch_trichrome_64_32_version_code = output['TRICHROME_64_32_VERSION_CODE'] + arch_trichrome_64_version_code = output['TRICHROME_64_VERSION_CODE'] + arch_trichrome_auto_64_32_version_code = output[ + 'TRICHROME_AUTO_64_32_VERSION_CODE'] + + self.assertEqual(arch_monochrome_32_version_code, '575000026') + self.assertEqual(arch_monochrome_32_64_version_code, '575000027') + self.assertEqual(arch_monochrome_version_code, '575000027') + self.assertEqual(arch_monochrome_64_32_version_code, '575000028') + self.assertEqual(arch_monochrome_64_version_code, '575000029') + self.assertEqual(arch_trichrome_32_version_code, '575000036') + self.assertEqual(arch_trichrome_32_64_version_code, '575000037') + self.assertEqual(arch_trichrome_version_code, '575000037') + self.assertEqual(arch_trichrome_64_32_version_code, '575000038') + self.assertEqual(arch_trichrome_64_version_code, '575000039') + self.assertEqual(arch_trichrome_auto_64_32_version_code, '575000058') + + def testGenerateVersionCodesAndroidArchRiscv64(self): + """Assert it handles different architectures correctly. + + Version codes for different builds need to be distinct and maintain a + certain ordering. + See docs in android_chrome_version._ABIS_TO_BIT_MASK for + reasoning. + """ + output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='riscv64', + is_next_build=False) + arch_chrome_version_code = output['CHROME_VERSION_CODE'] + + self.assertEqual(arch_chrome_version_code, '575000004') + + def testGenerateVersionCodesAndroidArchRiscv64Variants(self): + """Assert it handles 64-bit-specific additional version codes correctly. + + Some additional version codes are generated for 64-bit architectures. + See docstring on android_chrome_version.ARCH64_APK_VARIANTS for more info. + """ + output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='riscv64', + is_next_build=False) + arch_chrome_version_code = output['CHROME_VERSION_CODE'] + arch_chrome_modern_version_code = output['CHROME_MODERN_VERSION_CODE'] + arch_monochrome_version_code = output['MONOCHROME_VERSION_CODE'] + arch_trichrome_version_code = output['TRICHROME_VERSION_CODE'] + arch_trichrome_beta_version_code = output['TRICHROME_BETA_VERSION_CODE'] + arch_webview_stable_version_code = output['WEBVIEW_STABLE_VERSION_CODE'] + arch_webview_beta_version_code = output['WEBVIEW_BETA_VERSION_CODE'] + arch_webview_dev_version_code = output['WEBVIEW_DEV_VERSION_CODE'] + + self.assertEqual(arch_chrome_version_code, '575000004') + self.assertEqual(arch_chrome_modern_version_code, '575000014') + self.assertEqual(arch_monochrome_version_code, '575000024') + self.assertFalse('MONOCHROME_32_VERSION_CODE' in output) + self.assertFalse('MONOCHROME_32_64_VERSION_CODE' in output) + self.assertFalse('MONOCHROME_64_32_VERSION_CODE' in output) + self.assertFalse('MONOCHROME_64_VERSION_CODE' in output) + self.assertEqual(arch_trichrome_version_code, '575000034') + self.assertFalse('TRICHROME_32_VERSION_CODE' in output) + self.assertFalse('TRICHROME_32_64_VERSION_CODE' in output) + self.assertFalse('TRICHROME_64_32_VERSION_CODE' in output) + self.assertFalse('TRICHROME_64_32_HIGH_VERSION_CODE' in output) + self.assertFalse('TRICHROME_AUTO_64_32_VERSION_CODE' in output) + self.assertFalse('TRICHROME_64_VERSION_CODE' in output) + self.assertEqual(arch_trichrome_beta_version_code, '575000044') + self.assertFalse('TRICHROME_32_BETA_VERSION_CODE' in output) + self.assertFalse('TRICHROME_32_64_BETA_VERSION_CODE' in output) + self.assertFalse('TRICHROME_64_32_BETA_VERSION_CODE' in output) + self.assertFalse('TRICHROME_64_32_HIGH_BETA_VERSION_CODE' in output) + self.assertFalse('TRICHROME_64_BETA_VERSION_CODE' in output) + self.assertEqual(arch_webview_stable_version_code, '575000004') + self.assertEqual(arch_webview_beta_version_code, '575000014') + self.assertEqual(arch_webview_dev_version_code, '575000024') + self.assertFalse('WEBVIEW_64_STABLE_VERSION_CODE' in output) + self.assertFalse('WEBVIEW_64_BETA_VERSION_CODE' in output) + self.assertFalse('WEBVIEW_64_DEV_VERSION_CODE' in output) + self.assertFalse('WEBVIEW_32_STABLE_VERSION_CODE' in output) + self.assertFalse('WEBVIEW_32_BETA_VERSION_CODE' in output) + self.assertFalse('WEBVIEW_32_DEV_VERSION_CODE' in output) + + def testGenerateVersionCodesAndroidArchOrderArm(self): + """Assert it handles different architectures correctly. + + Version codes for different builds need to be distinct and maintain a + certain ordering. + See docstring on android_chrome_version._ABIS_TO_BIT_MASK for + reasoning. + + Test arm-related values. + """ + arm_output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='arm', + is_next_build=False) + arm64_output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='arm64', + is_next_build=False) + + arm_chrome_version_code = arm_output['CHROME_VERSION_CODE'] + arm64_chrome_version_code = arm64_output['CHROME_VERSION_CODE'] + + self.assertLess(arm_chrome_version_code, arm64_chrome_version_code) + + def testGenerateVersionCodesAndroidArchOrderX86(self): + """Assert it handles different architectures correctly. + + Version codes for different builds need to be distinct and maintain a + certain ordering. + See docstring on android_chrome_version._ABIS_TO_BIT_MASK for + reasoning. + + Test x86-related values. + """ + x86_output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='x86', + is_next_build=False) + x64_output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='x64', + is_next_build=False) + + x86_chrome_version_code = x86_output['CHROME_VERSION_CODE'] + x64_chrome_version_code = x64_output['CHROME_VERSION_CODE'] + + self.assertLess(x86_chrome_version_code, x64_chrome_version_code) + + def testGenerateVersionCodesAndroidWebviewChannelOrderBeta(self): + """Assert webview beta channel is higher than stable. + + The channel-specific version codes for standalone webview needs to follow + the order stable < beta < dev. + + This allows that if a user opts into beta track, they will always have the + beta apk, including any finch experiments targeted at beta users, even when + beta and stable channels are otherwise on the same version. + """ + output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='arm', + is_next_build=False) + + webview_stable_version_code = output['WEBVIEW_STABLE_VERSION_CODE'] + webview_beta_version_code = output['WEBVIEW_BETA_VERSION_CODE'] + + self.assertGreater(webview_beta_version_code, webview_stable_version_code) + + def testGenerateVersionCodesAndroidWebviewChannelOrderDev(self): + """Assert webview dev channel is higher than beta. + + The channel-specific version codes for standalone webview needs to follow + the order stable < beta < dev. + + This allows that if a user opts into dev track, they will always have the + dev apk, including any finch experiments targeted at dev users, even when + dev and beta channels are otherwise on the same version. + """ + output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='arm', + is_next_build=False) + + webview_beta_version_code = output['WEBVIEW_BETA_VERSION_CODE'] + webview_dev_version_code = output['WEBVIEW_DEV_VERSION_CODE'] + + self.assertGreater(webview_dev_version_code, webview_beta_version_code) + + def testGenerateVersionCodesTrichromeChannelOrderBeta(self): + """Assert Trichrome beta channel is higher than stable. + + When Trichrome channels are compiled to use the stable channel's package + name, their version codes need to follow the order stable < beta. + + This allows that if a user opts into beta track, they will always have the + beta apk, including any finch experiments targeted at beta users, even when + beta and stable channels are otherwise on the same version. + """ + output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='arm', + is_next_build=False) + + trichrome_stable_version_code = output['TRICHROME_VERSION_CODE'] + trichrome_beta_version_code = output['TRICHROME_BETA_VERSION_CODE'] + + self.assertGreater(trichrome_beta_version_code, + trichrome_stable_version_code) + + class _VersionCodeTest(unittest.TestCase): def testGenerateThenTranslate(self): """Assert it gives correct values for a version code that we generated.""" @@ -437,6 +834,17 @@ def testArm_Auto_64_32Translate(self): self.assertEqual(abi, 'arm_64_32') self.assertEqual(is_next_build, False) + + def testArm_Auto_64_32HighTranslate(self): + """Test for an auto build with Trichrome and arm_64_32_high.""" + build, patch, package, abi, is_next_build = TranslateVersionCode( + '584500053') + self.assertEqual(build, 5845) + self.assertEqual(patch, 0) + self.assertEqual(package, 'TRICHROME_AUTO') + self.assertEqual(abi, 'arm_64_32_high') + self.assertEqual(is_next_build, False) + def testArm_64_32HighTranslate(self): """Test for a build with Trichrome and arm_64_32_high.""" build, patch, package, abi, is_next_build = TranslateVersionCode( @@ -447,6 +855,26 @@ def testArm_64_32HighTranslate(self): self.assertEqual(abi, 'arm_64_32_high') self.assertEqual(is_next_build, False) + def testArm_64_32HighTranslateM113(self): + """Test for a build with Trichrome and arm_64_32_high.""" + build, patch, package, abi, is_next_build = TranslateVersionCode( + '567217639') + self.assertEqual(abi, 'x86_64') + + build, patch, package, abi, is_next_build = TranslateVersionCode( + '567217539') + self.assertEqual(abi, 'arm_64_32_high') + + def testArm_64_32HighTranslateM114(self): + """Test for a build with Trichrome and arm_64_32_high.""" + build, patch, package, abi, is_next_build = TranslateVersionCode( + '573505339') + self.assertEqual(abi, 'x86_64') + + build, patch, package, abi, is_next_build = TranslateVersionCode( + '573505239') + self.assertEqual(abi, 'arm_64_32_high') + def testX86_64Translate(self): """Test for a build with x86_64.""" build, patch, package, abi, is_next_build = TranslateVersionCode( @@ -498,5 +926,133 @@ def testWebviewTranslate(self): self.assertEqual(is_next_build, False) +class _VersionCodeGroupedTest(unittest.TestCase): + def testGenerateThenTranslate(self): + """Assert it gives correct values for a version code that we generated.""" + output = GenerateVersionCodes(EXAMPLE_GROUPED_VERSION_VALUES, + arch='arm', + is_next_build=False) + + version_code = output['MONOCHROME_VERSION_CODE'] + + build, patch, package, abi, is_next_build = TranslateVersionCode( + version_code) + self.assertEqual(build, int(EXAMPLE_GROUPED_VERSION_VALUES['BUILD'])) + self.assertEqual(patch, int(EXAMPLE_GROUPED_VERSION_VALUES['PATCH'])) + self.assertEqual(package, 'MONOCHROME') + self.assertEqual(abi, 'arm') + self.assertEqual(is_next_build, False) + + def testNextBuildTranslate(self): + """Test for a build with next.""" + build, patch, package, abi, is_next_build = TranslateVersionCode( + '575061210') + self.assertEqual(build, 5750) + self.assertEqual(patch, 112) + self.assertEqual(package, 'CHROME_MODERN') + self.assertEqual(abi, 'arm') + self.assertEqual(is_next_build, True) + + def testArm_64BuildTranslate(self): + """Test for a build with arm_64.""" + build, patch, package, abi, is_next_build = TranslateVersionCode( + '575011214') + self.assertEqual(build, 5750) + self.assertEqual(patch, 112) + self.assertEqual(package, 'CHROME_MODERN') + self.assertEqual(abi, 'arm_64') + self.assertEqual(is_next_build, False) + + def testArm_32_64Translate(self): + """Test for a build with arm_32_64.""" + build, patch, package, abi, is_next_build = TranslateVersionCode( + '575000011') + self.assertEqual(build, 5750) + self.assertEqual(patch, 0) + self.assertEqual(package, 'CHROME_MODERN') + self.assertEqual(abi, 'arm_32_64') + self.assertEqual(is_next_build, False) + + def testArm_64_32Translate(self): + """Test for a build with Trichrome and arm_64_32.""" + build, patch, package, abi, is_next_build = TranslateVersionCode( + '575000032') + self.assertEqual(build, 5750) + self.assertEqual(patch, 0) + self.assertEqual(package, 'TRICHROME') + self.assertEqual(abi, 'arm_64_32') + self.assertEqual(is_next_build, False) + + def testArm_Auto_64_32Translate(self): + """Test for an auto build with Trichrome and arm_64_32.""" + build, patch, package, abi, is_next_build = TranslateVersionCode( + '575000052') + self.assertEqual(build, 5750) + self.assertEqual(patch, 0) + self.assertEqual(package, 'TRICHROME_AUTO') + self.assertEqual(abi, 'arm_64_32') + self.assertEqual(is_next_build, False) + + def testArm_64_32HighTranslate(self): + """Test for a build with Trichrome and arm_64_32_high.""" + build, patch, package, abi, is_next_build = TranslateVersionCode( + '534613739') + self.assertEqual(build, 5346) + self.assertEqual(patch, 137) + self.assertEqual(package, 'TRICHROME') + self.assertEqual(abi, 'arm_64_32_high') + self.assertEqual(is_next_build, False) + + def testX86_64Translate(self): + """Test for a build with x86_64.""" + build, patch, package, abi, is_next_build = TranslateVersionCode( + '575000019') + self.assertEqual(build, 5750) + self.assertEqual(patch, 0) + self.assertEqual(package, 'CHROME_MODERN') + self.assertEqual(abi, 'x86_64') + self.assertEqual(is_next_build, False) + + def testX86_32_64Translate(self): + """Test for a build with x86_32_64.""" + build, patch, package, abi, is_next_build = TranslateVersionCode( + '575000017') + self.assertEqual(build, 5750) + self.assertEqual(patch, 0) + self.assertEqual(package, 'CHROME_MODERN') + self.assertEqual(abi, 'x86_32_64') + self.assertEqual(is_next_build, False) + + def testX86_64_32Translate(self): + """Test for a build with x86_64_32.""" + build, patch, package, abi, is_next_build = TranslateVersionCode( + '575000018') + self.assertEqual(build, 5750) + self.assertEqual(patch, 0) + self.assertEqual(package, 'CHROME_MODERN') + self.assertEqual(abi, 'x86_64_32') + self.assertEqual(is_next_build, False) + + def testX86_Auto_64_32Translate(self): + """Test for an auto build with x86_64_32.""" + build, patch, package, abi, is_next_build = TranslateVersionCode( + '575000058') + self.assertEqual(build, 5750) + self.assertEqual(patch, 0) + self.assertEqual(package, 'TRICHROME_AUTO') + self.assertEqual(abi, 'x86_64_32') + self.assertEqual(is_next_build, False) + + def testWebviewTranslate(self): + """Test for a build with Webview.""" + build, patch, package, abi, is_next_build = TranslateVersionCode( + '575000000', is_webview=True) + self.assertEqual(build, 5750) + self.assertEqual(patch, 0) + self.assertEqual(package, 'WEBVIEW_STABLE') + self.assertEqual(abi, 'arm') + self.assertEqual(is_next_build, False) + + if __name__ == '__main__': unittest.main() diff --git a/build/util/lib/common/PRESUBMIT.py b/build/util/lib/common/PRESUBMIT.py index b0477fd..28d0cf3 100644 --- a/build/util/lib/common/PRESUBMIT.py +++ b/build/util/lib/common/PRESUBMIT.py @@ -3,17 +3,11 @@ # found in the LICENSE file. -USE_PYTHON3 = True def _RunTests(input_api, output_api): return (input_api.canned_checks.RunUnitTestsInDirectory( - input_api, - output_api, - '.', - files_to_check=[r'.+_test.py$'], - run_on_python2=False, - skip_shebang_check=True)) + input_api, output_api, '.', files_to_check=[r'.+_test.py$'])) def CheckChangeOnUpload(input_api, output_api): diff --git a/build/util/lib/common/chrome_test_server_spawner.py b/build/util/lib/common/chrome_test_server_spawner.py index 62788f2..9c00e07 100644 --- a/build/util/lib/common/chrome_test_server_spawner.py +++ b/build/util/lib/common/chrome_test_server_spawner.py @@ -18,9 +18,10 @@ import sys import threading import time +import urllib -from six.moves import BaseHTTPServer, urllib - +from http.server import BaseHTTPRequestHandler +from http.server import HTTPServer SERVER_TYPES = { 'http': '', @@ -303,7 +304,7 @@ def Stop(self): self.wait_event.wait() -class SpawningServerRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): +class SpawningServerRequestHandler(BaseHTTPRequestHandler): """A handler used to process http GET/POST request.""" def _SendResponse(self, response_code, response_reason, additional_headers, @@ -444,8 +445,8 @@ class SpawningServer(object): """The class used to start/stop a http server.""" def __init__(self, test_server_spawner_port, port_forwarder, max_instances): - self.server = BaseHTTPServer.HTTPServer(('', test_server_spawner_port), - SpawningServerRequestHandler) + self.server = HTTPServer(('', test_server_spawner_port), + SpawningServerRequestHandler) self.server_port = self.server.server_port _logger.info('Started test server spawner on port: %d.', self.server_port) diff --git a/build/util/lib/results/result_sink.py b/build/util/lib/results/result_sink.py index 3996b65..e825954 100644 --- a/build/util/lib/results/result_sink.py +++ b/build/util/lib/results/result_sink.py @@ -7,11 +7,14 @@ import logging import os -import six - import requests # pylint: disable=import-error from lib.results import result_types +HTML_SUMMARY_MAX = 4096 + +_HTML_SUMMARY_ARTIFACT = '' +_TEST_LOG_ARTIFACT = '' + # Maps result_types to the luci test-result.proto. # https://godoc.org/go.chromium.org/luci/resultdb/proto/v1#TestStatus RESULT_MAP = { @@ -80,7 +83,8 @@ def Post(self, variant=None, artifacts=None, failure_reason=None, - html_artifact=None): + html_artifact=None, + tags=None): """Uploads the test result to the ResultSink server. This assumes that the rdb stream has been called already and that @@ -101,6 +105,8 @@ def Post(self, html_artifact: An optional html-formatted string to prepend to the test's log. Useful to encode click-able URL links in the test log, since that won't be formatted in the test_log. + tags: An optional list of tuple of key name and value to prepend to the + test's tags. Returns: N/A @@ -132,16 +138,33 @@ def Post(self, } } + if tags: + tr['tags'].extend({ + 'key': key_name, + 'value': value + } for (key_name, value) in tags) + if variant: tr['variant'] = {'def': variant} artifacts = artifacts or {} tr['summaryHtml'] = html_artifact if html_artifact else '' + + # If over max supported length of html summary, replace with artifact + # upload. + if (test_log + and len(tr['summaryHtml']) + len(_TEST_LOG_ARTIFACT) > HTML_SUMMARY_MAX + or len(tr['summaryHtml']) > HTML_SUMMARY_MAX): + b64_summary = base64.b64encode(tr['summaryHtml'].encode()).decode() + artifacts.update({'HTML Summary': {'contents': b64_summary}}) + tr['summaryHtml'] = _HTML_SUMMARY_ARTIFACT + if test_log: # Upload the original log without any modifications. - b64_log = six.ensure_str(base64.b64encode(six.ensure_binary(test_log))) + b64_log = base64.b64encode(test_log.encode()).decode() artifacts.update({'Test Log': {'contents': b64_log}}) - tr['summaryHtml'] += '' + tr['summaryHtml'] += _TEST_LOG_ARTIFACT + if artifacts: tr['artifacts'] = artifacts if failure_reason: diff --git a/build/util/lib/results/result_sink_test.py b/build/util/lib/results/result_sink_test.py index 7d65677..9025ed7 100755 --- a/build/util/lib/results/result_sink_test.py +++ b/build/util/lib/results/result_sink_test.py @@ -8,10 +8,7 @@ import sys import unittest -# The following non-std imports are fetched via vpython. See the list at -# //.vpython3 -import mock # pylint: disable=import-error -import six +from unittest import mock _BUILD_UTIL_PATH = os.path.abspath( os.path.join(os.path.dirname(__file__), '..', '..')) @@ -39,11 +36,7 @@ def testBasicClient(self): luci_context_json = { 'result_sink': _FAKE_CONTEXT, } - if six.PY2: - open_builtin_path = '__builtin__.open' - else: - open_builtin_path = 'builtins.open' - with mock.patch(open_builtin_path, + with mock.patch('builtins.open', mock.mock_open(read_data=json.dumps(luci_context_json))): client = result_sink.TryInitClient() self.assertEqual( @@ -103,6 +96,47 @@ def testPostFailingTest(self, mock_post): data['testResults'][0]['failureReason']['primaryErrorMessage'], 'omg test failure') + @mock.patch('requests.Session.post') + def testPostWithTestLogAndHTMLSummary(self, mock_post): + # This is under max length, but will be over when test log + # artifact is included. + test_artifact = '' % 'b' * ( + result_sink.HTML_SUMMARY_MAX - 35) + self.client.Post('some-test', + result_types.PASS, + 0, + 'some-test-log', + '//some/test.cc', + html_artifact=test_artifact) + data = json.loads(mock_post.call_args[1]['data']) + self.assertIsNotNone(data['testResults'][0]['summaryHtml']) + self.assertTrue( + len(data['testResults'][0]['summaryHtml']) < + result_sink.HTML_SUMMARY_MAX) + self.assertTrue(result_sink._HTML_SUMMARY_ARTIFACT in data['testResults'][0] + ['summaryHtml']) + self.assertTrue( + result_sink._TEST_LOG_ARTIFACT in data['testResults'][0]['summaryHtml']) + + @mock.patch('requests.Session.post') + def testPostWithTooLongSummary(self, mock_post): + # This will be over max length. + test_artifact = ('' % 'b' * + result_sink.HTML_SUMMARY_MAX) + self.client.Post('some-test', + result_types.PASS, + 0, + 'some-test-log', + '//some/test.cc', + html_artifact=test_artifact) + data = json.loads(mock_post.call_args[1]['data']) + self.assertIsNotNone(data['testResults'][0]['summaryHtml']) + self.assertTrue( + len(data['testResults'][0]['summaryHtml']) < + result_sink.HTML_SUMMARY_MAX) + self.assertTrue(result_sink._HTML_SUMMARY_ARTIFACT in data['testResults'][0] + ['summaryHtml']) + @mock.patch('requests.Session.post') def testPostWithTestFile(self, mock_post): self.client.Post('some-test', result_types.PASS, 0, 'some-test-log', @@ -133,6 +167,24 @@ def testPostWithVariant(self, mock_post): 'key2': 'value2' }}) + @mock.patch('requests.Session.post') + def testPostWithTags(self, mock_post): + self.client.Post('some-test', + result_types.PASS, + 0, + 'some-test-log', + None, + tags=[('key1', 'value1'), ('key2', 'value2')]) + data = json.loads(mock_post.call_args[1]['data']) + self.assertIn({ + 'key': 'key1', + 'value': 'value1' + }, data['testResults'][0]['tags']) + self.assertIn({ + 'key': 'key2', + 'value': 'value2' + }, data['testResults'][0]['tags']) + if __name__ == '__main__': unittest.main() diff --git a/build/util/version_test.py b/build/util/version_test.py index f0869da..f9b468f 100644 --- a/build/util/version_test.py +++ b/build/util/version_test.py @@ -40,7 +40,6 @@ class _VersionTest(unittest.TestCase): _ANDROID_CHROME_VARS = [ 'chrome_version_code', - 'chrome_modern_version_code', 'monochrome_version_code', 'trichrome_version_code', 'webview_stable_version_code', @@ -106,7 +105,6 @@ def testBuildOutputAndroid(self): contents = output['contents'] self.assertRegex(contents, r'\bchrome_version_code = "\d+"\s') - self.assertRegex(contents, r'\bchrome_modern_version_code = "\d+"\s') self.assertRegex(contents, r'\bmonochrome_version_code = "\d+"\s') self.assertRegex(contents, r'\btrichrome_version_code = "\d+"\s') self.assertRegex(contents, r'\bwebview_stable_version_code = "\d+"\s') diff --git a/build/vs_toolchain.py b/build/vs_toolchain.py index 7e9307b..e3ee25b 100755 --- a/build/vs_toolchain.py +++ b/build/vs_toolchain.py @@ -17,7 +17,7 @@ from gn_helpers import ToGNString -# VS 2022 x.x with 10.0.22621.0 SDK with ARM64 libraries and UWP support. +# VS 2022 17.4 with 10.0.22621.0 SDK with ARM64 libraries and UWP support. # See go/chromium-msvc-toolchain for instructions about how to update the # toolchain. # @@ -33,6 +33,8 @@ # Affects the availability of APIs in the toolchain headers. # * //docs/windows_build_instructions.md mentions of VS or Windows SDK. # Keeps the document consistent with the toolchain version. +# * //tools/win/setenv.py +# Add/remove VS versions when upgrading to a new VS version. # * MSVC_TOOLSET_VERSION in this file # Maps between Visual Studio version and MSVC toolset # * MSVS_VERSIONS in this file @@ -398,6 +400,15 @@ def CopyDlls(target_dir, configuration, target_cpu): if configuration == 'Debug': _CopyRuntime(target_dir, runtime_dir, target_cpu, debug=True) _CopyDebugger(target_dir, target_cpu) + if target_cpu == 'arm64': + target_dir = os.path.join(target_dir, 'win_clang_x64') + target_cpu = 'x64' + runtime_dir = x64_runtime + os.makedirs(target_dir, exist_ok=True) + _CopyRuntime(target_dir, runtime_dir, target_cpu, debug=False) + if configuration == 'Debug': + _CopyRuntime(target_dir, runtime_dir, target_cpu, debug=True) + _CopyDebugger(target_dir, target_cpu) def _CopyDebugger(target_dir, target_cpu): diff --git a/build/xcode_binaries.yaml b/build/xcode_binaries.yaml index b9069f4..6619757 100644 --- a/build/xcode_binaries.yaml +++ b/build/xcode_binaries.yaml @@ -22,6 +22,8 @@ root: "xcode_binaries" data: - dir: Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ - dir: Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/bison + - dir: Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos + - file: Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/air-lld - file: Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/bison - file: Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/gm4 - file: Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/gperf @@ -33,6 +35,8 @@ data: - file: Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/llvm-objdump - file: Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/llvm-otool - file: Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/llvm-size + - file: Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/metal + - file: Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/metallib - file: Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/mig - file: Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm - file: Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/otool diff --git a/build/zip_helpers.py b/build/zip_helpers.py new file mode 100644 index 0000000..b8ab9dd --- /dev/null +++ b/build/zip_helpers.py @@ -0,0 +1,238 @@ +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Helper functions for dealing with .zip files.""" + +import os +import pathlib +import posixpath +import stat +import time +import zipfile + +_FIXED_ZIP_HEADER_LEN = 30 + + +def _set_alignment(zip_obj, zip_info, alignment): + """Sets a ZipInfo's extra field such that the file will be aligned. + + Args: + zip_obj: The ZipFile object that is being written. + zip_info: The ZipInfo object about to be written. + alignment: The amount of alignment (e.g. 4, or 4*1024). + """ + header_size = _FIXED_ZIP_HEADER_LEN + len(zip_info.filename) + pos = zip_obj.fp.tell() + header_size + padding_needed = (alignment - (pos % alignment)) % alignment + + # Python writes |extra| to both the local file header and the central + # directory's file header. Android's zipalign tool writes only to the + # local file header, so there is more overhead in using Python to align. + zip_info.extra = b'\0' * padding_needed + + +def _hermetic_date_time(timestamp=None): + if not timestamp: + return (2001, 1, 1, 0, 0, 0) + utc_time = time.gmtime(timestamp) + return (utc_time.tm_year, utc_time.tm_mon, utc_time.tm_mday, utc_time.tm_hour, + utc_time.tm_min, utc_time.tm_sec) + + +def add_to_zip_hermetic(zip_file, + zip_path, + *, + src_path=None, + data=None, + compress=None, + alignment=None, + timestamp=None): + """Adds a file to the given ZipFile with a hard-coded modified time. + + Args: + zip_file: ZipFile instance to add the file to. + zip_path: Destination path within the zip file (or ZipInfo instance). + src_path: Path of the source file. Mutually exclusive with |data|. + data: File data as a string. + compress: Whether to enable compression. Default is taken from ZipFile + constructor. + alignment: If set, align the data of the entry to this many bytes. + timestamp: The last modification date and time for the archive member. + """ + assert (src_path is None) != (data is None), ( + '|src_path| and |data| are mutually exclusive.') + if isinstance(zip_path, zipfile.ZipInfo): + zipinfo = zip_path + zip_path = zipinfo.filename + else: + zipinfo = zipfile.ZipInfo(filename=zip_path) + zipinfo.external_attr = 0o644 << 16 + + zipinfo.date_time = _hermetic_date_time(timestamp) + + if alignment: + _set_alignment(zip_file, zipinfo, alignment) + + # Filenames can contain backslashes, but it is more likely that we've + # forgotten to use forward slashes as a directory separator. + assert '\\' not in zip_path, 'zip_path should not contain \\: ' + zip_path + assert not posixpath.isabs(zip_path), 'Absolute zip path: ' + zip_path + assert not zip_path.startswith('..'), 'Should not start with ..: ' + zip_path + assert posixpath.normpath(zip_path) == zip_path, ( + f'Non-canonical zip_path: {zip_path} vs: {posixpath.normpath(zip_path)}') + assert zip_path not in zip_file.namelist(), ( + 'Tried to add a duplicate zip entry: ' + zip_path) + + if src_path and os.path.islink(src_path): + zipinfo.external_attr |= stat.S_IFLNK << 16 # mark as a symlink + zip_file.writestr(zipinfo, os.readlink(src_path)) + return + + # Maintain the executable bit. + if src_path: + st = os.stat(src_path) + for mode in (stat.S_IXUSR, stat.S_IXGRP, stat.S_IXOTH): + if st.st_mode & mode: + zipinfo.external_attr |= mode << 16 + + if src_path: + with open(src_path, 'rb') as f: + data = f.read() + + # zipfile will deflate even when it makes the file bigger. To avoid + # growing files, disable compression at an arbitrary cut off point. + if len(data) < 16: + compress = False + + # None converts to ZIP_STORED, when passed explicitly rather than the + # default passed to the ZipFile constructor. + compress_type = zip_file.compression + if compress is not None: + compress_type = zipfile.ZIP_DEFLATED if compress else zipfile.ZIP_STORED + zip_file.writestr(zipinfo, data, compress_type) + + +def add_files_to_zip(inputs, + output, + *, + base_dir=None, + compress=None, + zip_prefix_path=None, + timestamp=None): + """Creates a zip file from a list of files. + + Args: + inputs: A list of paths to zip, or a list of (zip_path, fs_path) tuples. + output: Path, fileobj, or ZipFile instance to add files to. + base_dir: Prefix to strip from inputs. + compress: Whether to compress + zip_prefix_path: Path prepended to file path in zip file. + timestamp: Unix timestamp to use for files in the archive. + """ + if base_dir is None: + base_dir = '.' + input_tuples = [] + for tup in inputs: + if isinstance(tup, str): + src_path = tup + zip_path = os.path.relpath(src_path, base_dir) + # Zip files always use / as path separator. + if os.path.sep != posixpath.sep: + zip_path = str(pathlib.Path(zip_path).as_posix()) + tup = (zip_path, src_path) + input_tuples.append(tup) + + # Sort by zip path to ensure stable zip ordering. + input_tuples.sort(key=lambda tup: tup[0]) + + out_zip = output + if not isinstance(output, zipfile.ZipFile): + out_zip = zipfile.ZipFile(output, 'w') + + try: + for zip_path, fs_path in input_tuples: + if zip_prefix_path: + zip_path = posixpath.join(zip_prefix_path, zip_path) + add_to_zip_hermetic(out_zip, + zip_path, + src_path=fs_path, + compress=compress, + timestamp=timestamp) + finally: + if output is not out_zip: + out_zip.close() + + +def zip_directory(output, base_dir, **kwargs): + """Zips all files in the given directory.""" + inputs = [] + for root, _, files in os.walk(base_dir): + for f in files: + inputs.append(os.path.join(root, f)) + + add_files_to_zip(inputs, output, base_dir=base_dir, **kwargs) + + +def merge_zips(output, input_zips, path_transform=None, compress=None): + """Combines all files from |input_zips| into |output|. + + Args: + output: Path, fileobj, or ZipFile instance to add files to. + input_zips: Iterable of paths to zip files to merge. + path_transform: Called for each entry path. Returns a new path, or None to + skip the file. + compress: Overrides compression setting from origin zip entries. + """ + assert not isinstance(input_zips, str) # Easy mistake to make. + if isinstance(output, zipfile.ZipFile): + out_zip = output + out_filename = output.filename + else: + assert isinstance(output, str), 'Was: ' + repr(output) + out_zip = zipfile.ZipFile(output, 'w') + out_filename = output + + # Include paths in the existing zip here to avoid adding duplicate files. + crc_by_name = {i.filename: (out_filename, i.CRC) for i in out_zip.infolist()} + + try: + for in_file in input_zips: + with zipfile.ZipFile(in_file, 'r') as in_zip: + for info in in_zip.infolist(): + # Ignore directories. + if info.filename[-1] == '/': + continue + if path_transform: + dst_name = path_transform(info.filename) + if dst_name is None: + continue + else: + dst_name = info.filename + + data = in_zip.read(info) + + # If there's a duplicate file, ensure contents is the same and skip + # adding it multiple times. + if dst_name in crc_by_name: + orig_filename, orig_crc = crc_by_name[dst_name] + new_crc = zipfile.crc32(data) + if new_crc == orig_crc: + continue + msg = f"""File appeared in multiple inputs with differing contents. +File: {dst_name} +Input1: {orig_filename} +Input2: {in_file}""" + raise Exception(msg) + + if compress is not None: + compress_entry = compress + else: + compress_entry = info.compress_type != zipfile.ZIP_STORED + add_to_zip_hermetic(out_zip, + dst_name, + data=data, + compress=compress_entry) + crc_by_name[dst_name] = (in_file, out_zip.getinfo(dst_name).CRC) + finally: + if output is not out_zip: + out_zip.close() diff --git a/build/zip_helpers_unittest.py b/build/zip_helpers_unittest.py new file mode 100755 index 0000000..1900027 --- /dev/null +++ b/build/zip_helpers_unittest.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python3 +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import pathlib +import shutil +import sys +import tempfile +import unittest +import zipfile + +import zip_helpers + + +def _make_test_zips(tmp_dir, create_conflct=False): + zip1 = os.path.join(tmp_dir, 'A.zip') + zip2 = os.path.join(tmp_dir, 'B.zip') + with zipfile.ZipFile(zip1, 'w') as z: + z.writestr('file1', 'AAAAA') + z.writestr('file2', 'BBBBB') + with zipfile.ZipFile(zip2, 'w') as z: + z.writestr('file2', 'ABABA' if create_conflct else 'BBBBB') + z.writestr('file3', 'CCCCC') + return zip1, zip2 + + +class ZipHelpersTest(unittest.TestCase): + def test_merge_zips__identical_file(self): + with tempfile.TemporaryDirectory() as tmp_dir: + zip1, zip2 = _make_test_zips(tmp_dir) + + merged_zip = os.path.join(tmp_dir, 'merged.zip') + zip_helpers.merge_zips(merged_zip, [zip1, zip2]) + + with zipfile.ZipFile(merged_zip) as z: + self.assertEqual(z.namelist(), ['file1', 'file2', 'file3']) + + def test_merge_zips__conflict(self): + with tempfile.TemporaryDirectory() as tmp_dir: + zip1, zip2 = _make_test_zips(tmp_dir, create_conflct=True) + + merged_zip = os.path.join(tmp_dir, 'merged.zip') + with self.assertRaises(Exception): + zip_helpers.merge_zips(merged_zip, [zip1, zip2]) + + def test_merge_zips__conflict_with_append(self): + with tempfile.TemporaryDirectory() as tmp_dir: + zip1, zip2 = _make_test_zips(tmp_dir, create_conflct=True) + + with self.assertRaises(Exception): + with zipfile.ZipFile(zip1, 'a') as dst_zip: + zip_helpers.merge_zips(dst_zip, [zip2]) + + +if __name__ == '__main__': + unittest.main() diff --git a/buildtools/third_party/libc++/BUILD.gn b/buildtools/third_party/libc++/BUILD.gn index 21421aa..448459e 100644 --- a/buildtools/third_party/libc++/BUILD.gn +++ b/buildtools/third_party/libc++/BUILD.gn @@ -70,64 +70,86 @@ target(_libcxx_target_type, "libc++") { inputs = [ "__config_site" ] + # TODO(crbug.com/1458042): Move this build file to third_party/libc++/BUILD.gn once submodule migration is done sources = [ - "trunk/src/algorithm.cpp", - "trunk/src/any.cpp", - "trunk/src/atomic.cpp", - "trunk/src/barrier.cpp", - "trunk/src/bind.cpp", - "trunk/src/charconv.cpp", - "trunk/src/chrono.cpp", - "trunk/src/condition_variable.cpp", - "trunk/src/condition_variable_destructor.cpp", - "trunk/src/exception.cpp", - "trunk/src/format.cpp", - "trunk/src/functional.cpp", - "trunk/src/future.cpp", - "trunk/src/hash.cpp", - "trunk/src/ios.cpp", - "trunk/src/ios.instantiations.cpp", - "trunk/src/iostream.cpp", - "trunk/src/legacy_pointer_safety.cpp", - "trunk/src/locale.cpp", - "trunk/src/memory.cpp", - "trunk/src/mutex.cpp", - "trunk/src/mutex_destructor.cpp", - "trunk/src/new.cpp", - "trunk/src/optional.cpp", - "trunk/src/random.cpp", - "trunk/src/random_shuffle.cpp", - "trunk/src/regex.cpp", - "trunk/src/ryu/d2fixed.cpp", - "trunk/src/ryu/d2s.cpp", - "trunk/src/ryu/f2s.cpp", - "trunk/src/shared_mutex.cpp", - "trunk/src/stdexcept.cpp", - "trunk/src/string.cpp", - "trunk/src/strstream.cpp", - "trunk/src/system_error.cpp", - "trunk/src/thread.cpp", - "trunk/src/typeinfo.cpp", - "trunk/src/utility.cpp", - "trunk/src/valarray.cpp", - "trunk/src/variant.cpp", - "trunk/src/vector.cpp", - "trunk/src/verbose_abort.cpp", + "//third_party/libc++/src/src/algorithm.cpp", + "//third_party/libc++/src/src/any.cpp", + "//third_party/libc++/src/src/atomic.cpp", + "//third_party/libc++/src/src/barrier.cpp", + "//third_party/libc++/src/src/bind.cpp", + "//third_party/libc++/src/src/charconv.cpp", + "//third_party/libc++/src/src/chrono.cpp", + "//third_party/libc++/src/src/condition_variable.cpp", + "//third_party/libc++/src/src/condition_variable_destructor.cpp", + "//third_party/libc++/src/src/exception.cpp", + "//third_party/libc++/src/src/filesystem/directory_iterator.cpp", + "//third_party/libc++/src/src/filesystem/filesystem_error.cpp", + "//third_party/libc++/src/src/filesystem/operations.cpp", + "//third_party/libc++/src/src/filesystem/path.cpp", + "//third_party/libc++/src/src/functional.cpp", + "//third_party/libc++/src/src/future.cpp", + "//third_party/libc++/src/src/hash.cpp", + "//third_party/libc++/src/src/ios.cpp", + "//third_party/libc++/src/src/ios.instantiations.cpp", + "//third_party/libc++/src/src/iostream.cpp", + "//third_party/libc++/src/src/legacy_pointer_safety.cpp", + "//third_party/libc++/src/src/locale.cpp", + "//third_party/libc++/src/src/memory.cpp", + "//third_party/libc++/src/src/mutex.cpp", + "//third_party/libc++/src/src/mutex_destructor.cpp", + "//third_party/libc++/src/src/new_handler.cpp", + "//third_party/libc++/src/src/new_helpers.cpp", + "//third_party/libc++/src/src/optional.cpp", + "//third_party/libc++/src/src/random.cpp", + "//third_party/libc++/src/src/random_shuffle.cpp", + "//third_party/libc++/src/src/regex.cpp", + "//third_party/libc++/src/src/ryu/d2fixed.cpp", + "//third_party/libc++/src/src/ryu/d2s.cpp", + "//third_party/libc++/src/src/ryu/f2s.cpp", + "//third_party/libc++/src/src/shared_mutex.cpp", + "//third_party/libc++/src/src/stdexcept.cpp", + "//third_party/libc++/src/src/string.cpp", + "//third_party/libc++/src/src/strstream.cpp", + "//third_party/libc++/src/src/system_error.cpp", + "//third_party/libc++/src/src/thread.cpp", + "//third_party/libc++/src/src/typeinfo.cpp", + "//third_party/libc++/src/src/valarray.cpp", + "//third_party/libc++/src/src/variant.cpp", + "//third_party/libc++/src/src/vector.cpp", + "//third_party/libc++/src/src/verbose_abort.cpp", ] + if (is_apple || (!is_asan && !is_tsan && !is_msan)) { + # In {a,t,m}san configurations, operator new and operator delete will be + # provided by the sanitizer runtime library. Since libc++ defines these + # symbols with weak linkage, and the *san runtime uses strong linkage, it + # should technically be OK to include this file, but it's removed to be + # explicit. + sources += [ "//third_party/libc++/src/src/new.cpp" ] + } + + if (is_linux) { + # These sources are necessary for the Centipede fuzzer, + # which currently only needs to run on Linux. + sources += [ + "//third_party/libc++/src/src/filesystem/directory_entry.cpp", + "//third_party/libc++/src/src/filesystem/filesystem_clock.cpp", + ] + } + if (enable_iterator_debugging) { sources += [ - "trunk/src/debug.cpp", - "trunk/src/legacy_debug_handler.cpp", + "//third_party/libc++/src/src/debug.cpp", + "//third_party/libc++/src/src/legacy_debug_handler.cpp", ] } - include_dirs = [ "trunk/src" ] + include_dirs = [ "//third_party/libc++/src/src" ] if (is_win) { sources += [ - "trunk/src/support/win32/locale_win32.cpp", - "trunk/src/support/win32/support.cpp", - "trunk/src/support/win32/thread_win32.cpp", + "//third_party/libc++/src/src/support/win32/locale_win32.cpp", + "//third_party/libc++/src/src/support/win32/support.cpp", + "//third_party/libc++/src/src/support/win32/thread_win32.cpp", ] configs -= [ "//build/config/win:winver" ] configs += [ ":winver" ] @@ -196,13 +218,6 @@ target(_libcxx_target_type, "libc++") { ] } } - if (!is_apple && (is_asan || is_tsan || is_msan)) { - # In {a,t,m}san configurations, operator new and operator delete will be - # provided by the sanitizer runtime library. Since libc++ defines these - # symbols with weak linkage, and the *san runtime uses strong linkage, it - # should technically be OK to omit this, but it's added to be explicit. - defines += [ "_LIBCPP_DISABLE_NEW_DELETE_DEFINITIONS" ] - } if (!is_win) { defines += [ "LIBCXX_BUILDING_LIBCXXABI" ] diff --git a/buildtools/third_party/libc++/OWNERS b/buildtools/third_party/libc++/OWNERS index 52faa91..9a192b4 100644 --- a/buildtools/third_party/libc++/OWNERS +++ b/buildtools/third_party/libc++/OWNERS @@ -1,2 +1,3 @@ +hans@chromium.org thakis@chromium.org thomasanderson@chromium.org diff --git a/buildtools/third_party/libc++/__config_site b/buildtools/third_party/libc++/__config_site index 4ac81de..54e6b7e 100644 --- a/buildtools/third_party/libc++/__config_site +++ b/buildtools/third_party/libc++/__config_site @@ -11,7 +11,7 @@ // on Windows, the increase is great enough that we go above the 4GB size // limit for PDBs (https://crbug.com/1327710#c5). To fix this, we set // _LIBCPP_ABI_NAMESPACE to a shorter value. -#define _LIBCPP_ABI_NAMESPACE Cr +#define _LIBCPP_ABI_NAMESPACE __Cr #define _LIBCPP_ABI_VERSION 2 /* #undef _LIBCPP_ABI_FORCE_ITANIUM */ @@ -27,12 +27,16 @@ #define _LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS /* #undef _LIBCPP_NO_VCRUNTIME */ /* #undef _LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION */ -/* #undef _LIBCPP_HAS_NO_FILESYSTEM_LIBRARY */ +/* #undef _LIBCPP_HAS_NO_FILESYSTEM */ /* #undef _LIBCPP_HAS_PARALLEL_ALGORITHMS */ /* #undef _LIBCPP_HAS_NO_RANDOM_DEVICE */ /* #undef _LIBCPP_HAS_NO_LOCALIZATION */ /* #undef _LIBCPP_HAS_NO_WIDE_CHARACTERS */ +// PSTL backends +/* #undef _LIBCPP_PSTL_CPU_BACKEND_SERIAL */ +#define _LIBCPP_PSTL_CPU_BACKEND_THREAD + // Settings below aren't part of __config_site upstream. // We set them here since we want them to take effect everywhere, // unconditionally. @@ -45,9 +49,20 @@ #define _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +// Don't add ABI tags to libc++ symbols. ABI tags increase mangled name sizes. +// This only exists to allow multiple // libc++ versions to be linked into a +// binary, which Chrome doesn't do. +#define _LIBCPP_NO_ABI_TAG + // Explicitly define _LIBCPP_VERBOSE_ABORT(...) to call the termination // function because by default, this macro will does not call the verbose // termination function on Apple platforms. #define _LIBCPP_VERBOSE_ABORT(...) ::std::__libcpp_verbose_abort(__VA_ARGS__) +// TODO(crbug.com/1455923) Link against compiler-rt's builtins library to +// enable 128-arithmetic. +#if defined(_WIN32) +#define _LIBCPP_HAS_NO_INT128 +#endif + #endif // _LIBCPP_CONFIG_SITE diff --git a/buildtools/third_party/libc++/trunk b/buildtools/third_party/libc++/trunk deleted file mode 160000 index 6f4617b..0000000 --- a/buildtools/third_party/libc++/trunk +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 6f4617b9efc36525e030ec9855114f3c93550ec1 diff --git a/buildtools/third_party/libc++abi/BUILD.gn b/buildtools/third_party/libc++abi/BUILD.gn index 4e1e334..b5c15a0 100644 --- a/buildtools/third_party/libc++abi/BUILD.gn +++ b/buildtools/third_party/libc++abi/BUILD.gn @@ -2,7 +2,9 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build/config/android/config.gni") import("//build/config/c++/c++.gni") +import("//build/config/unwind.gni") source_set("libc++abi") { if (export_libcxxabi_from_executables) { @@ -14,33 +16,34 @@ source_set("libc++abi") { # Fuchsia builds don't link against any libraries that provide stack # unwinding symbols, unlike Linux does with glibc (same applies for Android). # Build and link against libunwind manually to get this functionality. - if (is_fuchsia || is_android) { + if (use_custom_libunwind) { deps = [ "//buildtools/third_party/libunwind" ] } + # TODO(crbug.com/1458042): Move this build file to third_party/libc++/BUILD.gn once submodule migration is done sources = [ - "trunk/src/abort_message.cpp", - "trunk/src/cxa_aux_runtime.cpp", - "trunk/src/cxa_default_handlers.cpp", - "trunk/src/cxa_exception.cpp", - "trunk/src/cxa_exception_storage.cpp", - "trunk/src/cxa_handlers.cpp", + "//third_party/libc++abi/src/src/abort_message.cpp", + "//third_party/libc++abi/src/src/cxa_aux_runtime.cpp", + "//third_party/libc++abi/src/src/cxa_default_handlers.cpp", + "//third_party/libc++abi/src/src/cxa_exception.cpp", + "//third_party/libc++abi/src/src/cxa_exception_storage.cpp", + "//third_party/libc++abi/src/src/cxa_handlers.cpp", # This file is supposed to be used in fno-exception builds of # libc++abi. We build lib++/libc++abi with exceptions enabled. - #"trunk/src/cxa_noexception.cpp", - "trunk/src/cxa_personality.cpp", - "trunk/src/cxa_vector.cpp", - "trunk/src/cxa_virtual.cpp", - "trunk/src/fallback_malloc.cpp", - "trunk/src/private_typeinfo.cpp", - "trunk/src/stdlib_exception.cpp", - "trunk/src/stdlib_stdexcept.cpp", - "trunk/src/stdlib_typeinfo.cpp", + #"//third_party/libc++abi/src/src/cxa_noexception.cpp", + "//third_party/libc++abi/src/src/cxa_personality.cpp", + "//third_party/libc++abi/src/src/cxa_vector.cpp", + "//third_party/libc++abi/src/src/cxa_virtual.cpp", + "//third_party/libc++abi/src/src/fallback_malloc.cpp", + "//third_party/libc++abi/src/src/private_typeinfo.cpp", + "//third_party/libc++abi/src/src/stdlib_exception.cpp", + "//third_party/libc++abi/src/src/stdlib_stdexcept.cpp", + "//third_party/libc++abi/src/src/stdlib_typeinfo.cpp", ] if (!is_tsan) { - sources += [ "trunk/src/cxa_guard.cpp" ] + sources += [ "//third_party/libc++abi/src/src/cxa_guard.cpp" ] } # See the comment in cxa_demangle_stub.cc for why we don't use LLVM's @@ -50,14 +53,22 @@ source_set("libc++abi") { if (is_android) { sources += [ "cxa_demangle_stub.cc" ] } else { - sources += [ "trunk/src/cxa_demangle.cpp" ] + sources += [ "//third_party/libc++abi/src/src/cxa_demangle.cpp" ] } + defines = [ "LIBCXXABI_SILENT_TERMINATE" ] + if (is_fuchsia || (is_posix && !is_apple)) { - sources += [ "trunk/src/cxa_thread_atexit.cpp" ] - } + sources += [ "//third_party/libc++abi/src/src/cxa_thread_atexit.cpp" ] - defines = [ "LIBCXXABI_SILENT_TERMINATE" ] + # Android's bionic libc added support for '__cxa_thread_atexit_impl' as of + # API level 23. + if (is_android && + ((!android_64bit_target_cpu && android32_ndk_api_level >= 23) || + (android_64bit_target_cpu && android64_ndk_api_level >= 23))) { + defines += [ "HAVE___CXA_THREAD_ATEXIT_IMPL" ] + } + } configs -= [ "//build/config/compiler:chromium_code", @@ -86,5 +97,5 @@ source_set("libc++abi") { } # libc++abi depends on libc++ internals. - include_dirs = [ "../libc++/trunk/src" ] + include_dirs = [ "//third_party/libc++/src/src" ] } diff --git a/buildtools/third_party/libc++abi/trunk b/buildtools/third_party/libc++abi/trunk deleted file mode 160000 index f7460fc..0000000 --- a/buildtools/third_party/libc++abi/trunk +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f7460fc60ab56553f0b3b0853f1ea60aa51b9478 diff --git a/buildtools/third_party/libunwind/BUILD.gn b/buildtools/third_party/libunwind/BUILD.gn index a8287bf..ff1517d 100644 --- a/buildtools/third_party/libunwind/BUILD.gn +++ b/buildtools/third_party/libunwind/BUILD.gn @@ -19,31 +19,29 @@ config("libunwind_config") { ] } +# TODO(crbug.com/1458042): Move this build file to third_party/libc++/BUILD.gn once submodule migration is done source_set("libunwind") { - visibility = [] - if (is_fuchsia) { - visibility += [ "//buildtools/third_party/libc++abi" ] - } else if (is_android) { - visibility += [ "//buildtools/third_party/libc++abi" ] + visibility = [ "//buildtools/third_party/libc++abi" ] + if (is_android) { visibility += [ "//services/tracing/public/cpp" ] } if (!is_component_build) { defines = [ "_LIBUNWIND_DISABLE_VISIBILITY_ANNOTATIONS" ] } - include_dirs = [ "//buildtools/third_party/libunwind/trunk/include" ] + include_dirs = [ "//third_party/libunwind/src/include" ] sources = [ # C++ sources - "trunk/src/Unwind-EHABI.cpp", - "trunk/src/libunwind.cpp", + "//third_party/libunwind/src/src/Unwind-EHABI.cpp", + "//third_party/libunwind/src/src/libunwind.cpp", # C sources - "trunk/src/Unwind-sjlj.c", - "trunk/src/UnwindLevel1-gcc-ext.c", - "trunk/src/UnwindLevel1.c", + "//third_party/libunwind/src/src/Unwind-sjlj.c", + "//third_party/libunwind/src/src/UnwindLevel1-gcc-ext.c", + "//third_party/libunwind/src/src/UnwindLevel1.c", # ASM sources - "trunk/src/UnwindRegistersRestore.S", - "trunk/src/UnwindRegistersSave.S", + "//third_party/libunwind/src/src/UnwindRegistersRestore.S", + "//third_party/libunwind/src/src/UnwindRegistersSave.S", ] configs -= [ "//build/config/compiler:chromium_code", diff --git a/buildtools/third_party/libunwind/trunk b/buildtools/third_party/libunwind/trunk deleted file mode 160000 index c4ed9cb..0000000 --- a/buildtools/third_party/libunwind/trunk +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c4ed9cba55ce96b94a1f676890dcac8673cdedfd diff --git a/examples/libcxx/.gn b/examples/libcxx/.gn new file mode 100644 index 0000000..4e5ae1b --- /dev/null +++ b/examples/libcxx/.gn @@ -0,0 +1,5 @@ +use_chromium_config = true + +default_args = { + use_custom_libcxx = true +} diff --git a/examples/libcxx/BUILD.gn b/examples/libcxx/BUILD.gn new file mode 100644 index 0000000..f211190 --- /dev/null +++ b/examples/libcxx/BUILD.gn @@ -0,0 +1,5 @@ +executable("test") { + sources = [ + "main.cc", + ] +} diff --git a/examples/libcxx/main.cc b/examples/libcxx/main.cc new file mode 100644 index 0000000..05f0dc5 --- /dev/null +++ b/examples/libcxx/main.cc @@ -0,0 +1,8 @@ +#include + +#include + +int main(int argc, const char *argv[]) { + printf("Passed\n"); + return 0; +} diff --git a/scripts/create_dist.js b/scripts/create_dist.js index d080df3..97b955b 100755 --- a/scripts/create_dist.js +++ b/scripts/create_dist.js @@ -32,19 +32,19 @@ const gnzip = new JSZip() const files = searchFiles('build_overrides').concat( searchFiles('build')).concat( - searchFiles('buildtools/third_party/libc++/trunk/src')).concat( - searchFiles('buildtools/third_party/libc++/trunk/include')).concat( - searchFiles('buildtools/third_party/libc++abi/trunk/src')).concat( - searchFiles('buildtools/third_party/libc++abi/trunk/include')).concat( - searchFiles('buildtools/third_party/libunwind/trunk/src')).concat( - searchFiles('buildtools/third_party/libunwind/trunk/include')).concat( searchFiles('testing')).concat( searchFiles('tools/cfi')).concat( searchFiles('tools/clang/scripts')).concat( searchFiles('tools/win')).concat( searchFiles('third_party/catapult')).concat( searchFiles('third_party/depot_tools')).concat( - searchFiles('third_party/googletest')) + searchFiles('third_party/googletest')).concat( + searchFiles('third_party/libc++/src/src')).concat( + searchFiles('third_party/libc++/src/include')).concat( + searchFiles('third_party/libc++abi/src/src')).concat( + searchFiles('third_party/libc++abi/src/include')).concat( + searchFiles('third_party/libunwind/src/src')).concat( + searchFiles('third_party/libunwind/src/include')) addFileToZip(gnzip, 'buildtools/deps_revisions.gni', '.') addFileToZip(gnzip, 'buildtools/third_party/eu-strip/bin/eu-strip', '.') addFileToZip(gnzip, 'buildtools/third_party/libc++/__config_site', '.') diff --git a/third_party/libc++/OWNERS b/third_party/libc++/OWNERS new file mode 100644 index 0000000..9a192b4 --- /dev/null +++ b/third_party/libc++/OWNERS @@ -0,0 +1,3 @@ +hans@chromium.org +thakis@chromium.org +thomasanderson@chromium.org diff --git a/buildtools/third_party/libc++/README.chromium b/third_party/libc++/README.chromium similarity index 81% rename from buildtools/third_party/libc++/README.chromium rename to third_party/libc++/README.chromium index 0c6fbee..235c7d6 100644 --- a/buildtools/third_party/libc++/README.chromium +++ b/third_party/libc++/README.chromium @@ -3,8 +3,9 @@ Short Name: libc++ URL: http://libcxx.llvm.org/ Version: 1.0 License: MIT, University of Illinois/NCSA Open Source License -License File: trunk/LICENSE.TXT +License File: src/LICENSE.TXT Security Critical: yes +Shipped: yes Description: diff --git a/third_party/libc++/README.md b/third_party/libc++/README.md new file mode 100644 index 0000000..1714baf --- /dev/null +++ b/third_party/libc++/README.md @@ -0,0 +1,4 @@ +The chromium build files for source files in third_party/libc++/src are in /buildtools/third_party/libc++ + +TODO(crbug.com/1458042): After chromium/src is on Git Submodules, the builds files should be moved +to this directory. diff --git a/third_party/libc++/src b/third_party/libc++/src new file mode 160000 index 0000000..84fb809 --- /dev/null +++ b/third_party/libc++/src @@ -0,0 +1 @@ +Subproject commit 84fb809dd6dae36d556dc0bb702c6cc2ce9d4b80 diff --git a/third_party/libc++abi/OWNERS b/third_party/libc++abi/OWNERS new file mode 100644 index 0000000..52faa91 --- /dev/null +++ b/third_party/libc++abi/OWNERS @@ -0,0 +1,2 @@ +thakis@chromium.org +thomasanderson@chromium.org diff --git a/buildtools/third_party/libc++abi/README.chromium b/third_party/libc++abi/README.chromium similarity index 82% rename from buildtools/third_party/libc++abi/README.chromium rename to third_party/libc++abi/README.chromium index a57429e..6cf9a70 100644 --- a/buildtools/third_party/libc++abi/README.chromium +++ b/third_party/libc++abi/README.chromium @@ -3,9 +3,8 @@ Short Name: libc++abi URL: http://libcxxabi.llvm.org/ Version: 1.0 License: MIT, University of Illinois/NCSA Open Source License -License File: trunk/LICENSE.TXT +License File: src/LICENSE.TXT Security Critical: yes - +Shipped: yes Description: - libc++abi for Chromium. diff --git a/third_party/libc++abi/README.md b/third_party/libc++abi/README.md new file mode 100644 index 0000000..fcc6ebd --- /dev/null +++ b/third_party/libc++abi/README.md @@ -0,0 +1,4 @@ +The chromium build files for source files in third_party/libc++abi/src are /buildtools/third_party/libc++abi/. + +TODO(crbug.com/1458042): After chromium/src is on Git Submodules, the builds files should be moved +to this directory. diff --git a/third_party/libc++abi/src b/third_party/libc++abi/src new file mode 160000 index 0000000..6a8358a --- /dev/null +++ b/third_party/libc++abi/src @@ -0,0 +1 @@ +Subproject commit 6a8358a1423aa37f33d87b300b634c067b2741c1 diff --git a/third_party/libunwind/OWNERS b/third_party/libunwind/OWNERS new file mode 100644 index 0000000..52faa91 --- /dev/null +++ b/third_party/libunwind/OWNERS @@ -0,0 +1,2 @@ +thakis@chromium.org +thomasanderson@chromium.org diff --git a/buildtools/third_party/libunwind/README.chromium b/third_party/libunwind/README.chromium similarity index 75% rename from buildtools/third_party/libunwind/README.chromium rename to third_party/libunwind/README.chromium index 303e148..344659c 100644 --- a/buildtools/third_party/libunwind/README.chromium +++ b/third_party/libunwind/README.chromium @@ -1,9 +1,10 @@ Name: libunwind URL: https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libunwind.git -Version: ToT (Top of the Tree, the mirror is kept in sync with the upstream project) +Version: unknown License: MIT, University of Illinois/NCSA Open Source License -License File: trunk/LICENSE.TXT +License File: src/LICENSE.TXT Security Critical: yes +Shipped: yes Description: diff --git a/third_party/libunwind/README.md b/third_party/libunwind/README.md new file mode 100644 index 0000000..53b3894 --- /dev/null +++ b/third_party/libunwind/README.md @@ -0,0 +1,4 @@ +The chromium build files for source files in third_party/libunwind/src are /buildtools/third_party/libunwind/. + +TODO(crbug.com/1458042): After chromium/src is on Git Submodules, the builds files should be moved +to this directory. diff --git a/third_party/libunwind/src b/third_party/libunwind/src new file mode 160000 index 0000000..76e621a --- /dev/null +++ b/third_party/libunwind/src @@ -0,0 +1 @@ +Subproject commit 76e621a89787516da745489245d8b65a48ad60d8 diff --git a/tools/clang/scripts/update.py b/tools/clang/scripts/update.py index 4fcaaab..82f9c4f 100755 --- a/tools/clang/scripts/update.py +++ b/tools/clang/scripts/update.py @@ -35,11 +35,12 @@ # https://chromium.googlesource.com/chromium/src/+/main/docs/updating_clang.md # Reverting problematic clang rolls is safe, though. # This is the output of `git describe` and is usable as a commit-ish. -CLANG_REVISION = 'llvmorg-17-init-2387-g68e81d7e' -CLANG_SUB_REVISION = 1 +CLANG_REVISION = 'llvmorg-17-init-16420-g0c545a44' +CLANG_SUB_REVISION = 8 PACKAGE_VERSION = '%s-%s' % (CLANG_REVISION, CLANG_SUB_REVISION) RELEASE_VERSION = '17' +# TODO(crbug.com/1467585): Bump to 18 in next Clang roll. CDS_URL = os.environ.get('CDS_CLANG_BUCKET_OVERRIDE', 'https://commondatastorage.googleapis.com/chromium-browser-clang') @@ -60,6 +61,11 @@ def RmTree(dir): """Delete dir.""" + if sys.platform == 'win32': + # Avoid problems with paths longer than MAX_PATH + # https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation + dir = f'\\\\?\\{dir}' + def ChmodAndRetry(func, path, _): # Subversion can leave read-only files around. if not os.access(path, os.W_OK): @@ -95,7 +101,7 @@ def DownloadUrl(url, output_file): while True: try: - sys.stdout.write('Downloading %s ' % url) + sys.stdout.write(f'Downloading {url} ') sys.stdout.flush() request = urllib.request.Request(url) request.add_header('Accept-Encoding', 'gzip') @@ -127,8 +133,8 @@ def DownloadUrl(url, output_file): sys.stdout.flush() dots_printed = num_dots if total_size is not None and bytes_done != total_size: - raise urllib.error.URLError("only got %d of %d bytes" % - (bytes_done, total_size)) + raise urllib.error.URLError( + f'only got {bytes_done} of {total_size} bytes') if is_gzipped: output_file.write(gzip_decode.flush()) print(' Done.') @@ -142,7 +148,7 @@ def DownloadUrl(url, output_file): num_retries -= 1 output_file.seek(0) output_file.truncate() - print('Retrying in %d s ...' % retry_wait_s) + print(f'Retrying in {retry_wait_s} s ...') sys.stdout.flush() time.sleep(retry_wait_s) retry_wait_s *= 2 @@ -232,21 +238,20 @@ def DownloadAndUnpackClangWinRuntime(output_dir): sys.exit(1) -def UpdatePackage(package_name, host_os): +def UpdatePackage(package_name, host_os, dir=LLVM_BUILD_DIR): stamp_file = None package_file = None - stamp_file = os.path.join(LLVM_BUILD_DIR, package_name + '_revision') + stamp_file = os.path.join(dir, package_name + '_revision') if package_name == 'clang': stamp_file = STAMP_FILE package_file = 'clang' elif package_name == 'coverage_tools': - stamp_file = os.path.join(LLVM_BUILD_DIR, 'cr_coverage_revision') + stamp_file = os.path.join(dir, 'cr_coverage_revision') package_file = 'llvm-code-coverage' elif package_name == 'objdump': package_file = 'llvmobjdump' - elif package_name in ['clang-libs', 'clang-tidy', 'clangd', 'libclang', - 'translation_unit']: + elif package_name in ['clang-tidy', 'clangd', 'libclang', 'translation_unit']: package_file = package_name else: print('Unknown package: "%s".' % package_name) @@ -278,17 +283,17 @@ def UpdatePackage(package_name, host_os): # Updating the main clang package nukes the output dir. Any other packages # need to be updated *after* the clang package. - if package_name == 'clang' and os.path.exists(LLVM_BUILD_DIR): - RmTree(LLVM_BUILD_DIR) + if package_name == 'clang' and os.path.exists(dir): + RmTree(dir) - DownloadAndUnpackPackage(package_file, LLVM_BUILD_DIR, host_os) + DownloadAndUnpackPackage(package_file, dir, host_os) if package_name == 'clang' and 'mac' in target_os: - DownloadAndUnpackClangMacRuntime(LLVM_BUILD_DIR) + DownloadAndUnpackClangMacRuntime(dir) if package_name == 'clang' and 'win' in target_os: # When doing win/cross builds on other hosts, get the Windows runtime # libraries, and llvm-symbolizer.exe (needed in asan builds). - DownloadAndUnpackClangWinRuntime(LLVM_BUILD_DIR) + DownloadAndUnpackClangWinRuntime(dir) WriteStampFile(expected_stamp, stamp_file) return 0 @@ -330,6 +335,11 @@ def main(): help='Verify that clang has the passed-in version.') args = parser.parse_args() + # TODO(crbug.com/1467585): Remove in next Clang roll. + if args.llvm_force_head_revision: + global RELEASE_VERSION + RELEASE_VERSION = '18' + if args.verify_version and args.verify_version != RELEASE_VERSION: print('RELEASE_VERSION is %s but --verify-version argument was %s.' % ( RELEASE_VERSION, args.verify_version)) @@ -340,10 +350,11 @@ def main(): print(RELEASE_VERSION) return 0 + output_dir = LLVM_BUILD_DIR if args.output_dir: - global LLVM_BUILD_DIR, STAMP_FILE - LLVM_BUILD_DIR = os.path.abspath(args.output_dir) - STAMP_FILE = os.path.join(LLVM_BUILD_DIR, 'cr_build_revision') + global STAMP_FILE + output_dir = os.path.abspath(args.output_dir) + STAMP_FILE = os.path.join(output_dir, 'cr_build_revision') if args.print_revision: if args.llvm_force_head_revision: @@ -368,7 +379,7 @@ def main(): print('--llvm-force-head-revision can only be used for --print-revision') return 1 - return UpdatePackage(args.package, args.host_os) + return UpdatePackage(args.package, args.host_os, output_dir) if __name__ == '__main__': diff --git a/tools/gn b/tools/gn index d750800..e96b1bb 160000 --- a/tools/gn +++ b/tools/gn @@ -1 +1 @@ -Subproject commit d7508000ba66841a9170999bdb358d4c6987a0a0 +Subproject commit e96b1bb71f81a65b00ad1736154aa71b12744a08