From 5780d43c4fd601873792120d29c02d641178bde0 Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Sun, 6 Aug 2023 17:03:24 -0500 Subject: [PATCH 01/21] editor: initialize `.vscode` settings directory These are basically always useful in vscode; turn them on. Note that there is an editorconfig plugin for vscode and we do have a `.editorconfig` file but these options aren't set due to an old intellj-rust bug. Signed-off-by: Austin Seipp --- .vscode/settings.json | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000000..7c26e7256e --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "files.insertFinalNewline": true, + "files.trimTrailingWhitespace": true, +} From 654e70998d1dbe44b836d27b61a37403994dbfb4 Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Sun, 6 Aug 2023 17:03:24 -0500 Subject: [PATCH 02/21] tools: initialize useful dotslash tools Signed-off-by: Austin Seipp --- tools/bin/README.md | 27 +++++++++++++++++ tools/bin/buck2 | 67 ++++++++++++++++++++++++++++++++++++++++++ tools/bin/diffedit3 | 19 ++++++++++++ tools/bin/reindeer | 67 ++++++++++++++++++++++++++++++++++++++++++ tools/bin/rust-project | 67 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 247 insertions(+) create mode 100644 tools/bin/README.md create mode 100755 tools/bin/buck2 create mode 100755 tools/bin/diffedit3 create mode 100755 tools/bin/reindeer create mode 100755 tools/bin/rust-project diff --git a/tools/bin/README.md b/tools/bin/README.md new file mode 100644 index 0000000000..b4c9f5f17f --- /dev/null +++ b/tools/bin/README.md @@ -0,0 +1,27 @@ +# `dotslash` executables + +This directory contains various [DotSlash](https://github.com/facebook/dotslash) +executables: portable executables that are downloaded on demand. + +DotSlash lets us have our tools available on any platform without the need to +install them, in a version-controllable and repeatable way that doesn't bloat +repositories. This helps make sure developers can have consistent environments, +if they wish to opt in. + +- [Install DotSlash](https://dotslash-cli.com/docs/installation/) + - TL;DR cargo users: `cargo install dotslash` + - TL;DR nix users: `nix profile install nixpkgs#dotslash` + +Once `dotslash` is somewhere in your `$PATH`, add these files to your `$PATH` +too: + +```bash +export PATH=$(jj root)/tools/bin:$PATH +``` + +Then tools like `buck2`, `reindeer`, and `diffedit3` will work with a small +one-time startup penalty to download the executable. + +## Upgrading dotslash files + +To be written... diff --git a/tools/bin/buck2 b/tools/bin/buck2 new file mode 100755 index 0000000000..a8da67b864 --- /dev/null +++ b/tools/bin/buck2 @@ -0,0 +1,67 @@ +#!/usr/bin/env dotslash + +{ + "name": "buck2", + "platforms": { + "macos-aarch64": { + "size": 24547468, + "hash": "blake3", + "digest": "24bcf7f6865f08ae84ea7128498d3e3db8f542eb99834616a926c4856b8bbe8a", + "format": "zst", + "path": "buck2-aarch64-apple-darwin", + "providers": [ + { + "url": "https://github.com/thoughtpolice/buck2/releases/download/snapshot-20241010-174933/buck2-aarch64-apple-darwin.zst" + } + ] + }, + "linux-aarch64": { + "size": 26850248, + "hash": "blake3", + "digest": "1502492202feaf028ed4bc36790915bf030740828efe5e2744013f2f7fcff035", + "format": "zst", + "path": "buck2-aarch64-unknown-linux-musl", + "providers": [ + { + "url": "https://github.com/thoughtpolice/buck2/releases/download/snapshot-20241010-174933/buck2-aarch64-unknown-linux-musl.zst" + } + ] + }, + "macos-x86_64": { + "size": 26304234, + "hash": "blake3", + "digest": "7a579a269a4ca70db45582ffa3d51992bf7d409e3cdd1a0c5eddeb3e753fabf9", + "format": "zst", + "path": "buck2-x86_64-apple-darwin", + "providers": [ + { + "url": "https://github.com/thoughtpolice/buck2/releases/download/snapshot-20241010-174933/buck2-x86_64-apple-darwin.zst" + } + ] + }, + "windows-x86_64": { + "size": 21721222, + "hash": "blake3", + "digest": "860cf7f5dd3430a7cfb71780267c4927813930867d14cd8778e65f3ff35cfe2c", + "format": "zst", + "path": "buck2-x86_64-pc-windows-msvc.exe", + "providers": [ + { + "url": "https://github.com/thoughtpolice/buck2/releases/download/snapshot-20241010-174933/buck2-x86_64-pc-windows-msvc.exe.zst" + } + ] + }, + "linux-x86_64": { + "size": 27865818, + "hash": "blake3", + "digest": "3851000f32b7097f0c8e3d5bc0f8938b7410d139f9afb625fcb2c370dc2ff1e8", + "format": "zst", + "path": "buck2-x86_64-unknown-linux-musl", + "providers": [ + { + "url": "https://github.com/thoughtpolice/buck2/releases/download/snapshot-20241010-174933/buck2-x86_64-unknown-linux-musl.zst" + } + ] + } + } +} diff --git a/tools/bin/diffedit3 b/tools/bin/diffedit3 new file mode 100755 index 0000000000..decd47abdf --- /dev/null +++ b/tools/bin/diffedit3 @@ -0,0 +1,19 @@ +#!/usr/bin/env dotslash + +{ + "name": "diffedit3", + "platforms": { + "linux-x86_64": { + "size": 3498501, + "hash": "blake3", + "digest": "84557e1409e0e4c76d80ff0758ab5995ec40dd7a151bfdef7858c54d71d43d9a", + "format": "tar.gz", + "path": "diffedit3", + "providers": [ + { + "url": "https://github.com/ilyagr/diffedit3/releases/download/v0.4.0/diffedit3-v0.4.0-x86_64-unknown-linux-musl.tar.gz" + } + ] + } + } +} diff --git a/tools/bin/reindeer b/tools/bin/reindeer new file mode 100755 index 0000000000..1f3f91f92b --- /dev/null +++ b/tools/bin/reindeer @@ -0,0 +1,67 @@ +#!/usr/bin/env dotslash + +{ + "name": "reindeer", + "platforms": { + "macos-aarch64": { + "size": 4412876, + "hash": "blake3", + "digest": "9b5b50c1aad2d66bf8d735bbaff982d9e80555c8b6ac6cfc2138abd3a58e835d", + "format": "zst", + "path": "reindeer-aarch64-apple-darwin", + "providers": [ + { + "url": "https://github.com/facebookincubator/reindeer/releases/download/v2024.06.24.00/reindeer-aarch64-apple-darwin.zst" + } + ] + }, + "linux-aarch64": { + "size": 5392168, + "hash": "blake3", + "digest": "b3ef9ed3ccac3f1e06beded89c657371eaf9aced296180d83eecbf76d20e9163", + "format": "zst", + "path": "reindeer-aarch64-unknown-linux-musl", + "providers": [ + { + "url": "https://github.com/facebookincubator/reindeer/releases/download/v2024.06.24.00/reindeer-aarch64-unknown-linux-musl.zst" + } + ] + }, + "macos-x86_64": { + "size": 4795708, + "hash": "blake3", + "digest": "286313e205766872d307f3e0f0a1eb75be0c72884594e0e3c3db0324ac26367a", + "format": "zst", + "path": "reindeer-x86_64-apple-darwin", + "providers": [ + { + "url": "https://github.com/facebookincubator/reindeer/releases/download/v2024.06.24.00/reindeer-x86_64-apple-darwin.zst" + } + ] + }, + "windows-x86_64": { + "size": 3673074, + "hash": "blake3", + "digest": "fcea87875f935f872168fa2520d856cfb1f2492e69db9180c997f7557b6f0648", + "format": "zst", + "path": "reindeer-x86_64-pc-windows-msvc.exe", + "providers": [ + { + "url": "https://github.com/facebookincubator/reindeer/releases/download/v2024.06.24.00/reindeer-x86_64-pc-windows-msvc.exe.zst" + } + ] + }, + "linux-x86_64": { + "size": 5682381, + "hash": "blake3", + "digest": "3524ebb3f8b818006890b93fe81a87493e5e3134e7c05c54aed2f9395b1124d0", + "format": "zst", + "path": "reindeer-x86_64-unknown-linux-musl", + "providers": [ + { + "url": "https://github.com/facebookincubator/reindeer/releases/download/v2024.06.24.00/reindeer-x86_64-unknown-linux-musl.zst" + } + ] + } + } +} diff --git a/tools/bin/rust-project b/tools/bin/rust-project new file mode 100755 index 0000000000..e0f123a9d7 --- /dev/null +++ b/tools/bin/rust-project @@ -0,0 +1,67 @@ +#!/usr/bin/env dotslash + +{ + "name": "rust-project", + "platforms": { + "macos-aarch64": { + "size": 1212011, + "hash": "blake3", + "digest": "51ea3831a54a823a294c38c8ee418c510412dad4c3d3ca88dd97d32c5ab90e99", + "format": "zst", + "path": "rust-project-aarch64-apple-darwin", + "providers": [ + { + "url": "https://github.com/thoughtpolice/buck2/releases/download/snapshot-20241010-174933/rust-project-aarch64-apple-darwin.zst" + } + ] + }, + "linux-aarch64": { + "size": 1392244, + "hash": "blake3", + "digest": "b14c6c1e65f65cad1fac05f40055daf8759c7bb2bf81b2e13a203734f10c0e4a", + "format": "zst", + "path": "rust-project-aarch64-unknown-linux-musl", + "providers": [ + { + "url": "https://github.com/thoughtpolice/buck2/releases/download/snapshot-20241010-174933/rust-project-aarch64-unknown-linux-musl.zst" + } + ] + }, + "macos-x86_64": { + "size": 1319754, + "hash": "blake3", + "digest": "fcac9f5c992d5e2f64459da40b2d61dc189e7d8a75091988b87149d44647de82", + "format": "zst", + "path": "rust-project-x86_64-apple-darwin", + "providers": [ + { + "url": "https://github.com/thoughtpolice/buck2/releases/download/snapshot-20241010-174933/rust-project-x86_64-apple-darwin.zst" + } + ] + }, + "windows-x86_64": { + "size": 1149779, + "hash": "blake3", + "digest": "16abc1a549507b115ada2beabb42233da0211c2d9606fc1093292fb68f24a5a6", + "format": "zst", + "path": "rust-project-x86_64-pc-windows-msvc.exe", + "providers": [ + { + "url": "https://github.com/thoughtpolice/buck2/releases/download/snapshot-20241010-174933/rust-project-x86_64-pc-windows-msvc.exe.zst" + } + ] + }, + "linux-x86_64": { + "size": 1476702, + "hash": "blake3", + "digest": "00c5936f03f2f2c3e808dccdf923e2420034bd51aa817868cd9144286eaf1062", + "format": "zst", + "path": "rust-project-x86_64-unknown-linux-musl", + "providers": [ + { + "url": "https://github.com/thoughtpolice/buck2/releases/download/snapshot-20241010-174933/rust-project-x86_64-unknown-linux-musl.zst" + } + ] + } + } +} From a0ae3b03f8f9f57289a710deef1ebbf69b7cda66 Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Sun, 6 Aug 2023 17:03:24 -0500 Subject: [PATCH 03/21] buck: repository prep work This lays the basic groundwork to invoke buck2 in a way that barely works and builds nothing. The `jj.bzl` code will be used in some upcoming diffs to add `BUCK` files to the various crates. Signed-off-by: Austin Seipp --- .buckconfig | 115 +++++++++++ .buckroot | 0 .vscode/settings.json | 9 + buck/.gitattributes | 2 + buck/mode/.buckconfig | 5 + buck/mode/BUILD | 18 ++ buck/mode/PACKAGE | 4 + buck/mode/debug | 1 + buck/mode/local | 1 + buck/mode/release | 1 + buck/mode/remote | 1 + buck/platforms/BUILD | 14 ++ buck/platforms/defs.bzl | 221 ++++++++++++++++++++++ buck/shims/jj.bzl | 50 +++++ buck/shims/noprelude.bzl | 15 ++ buck/shims/third_party_rust.bzl | 24 +++ buck/third-party/.buckconfig | 7 + buck/toolchains/.buckconfig | 7 + buck/toolchains/BUILD | 25 +++ buck/toolchains/PACKAGE | 4 + buck/toolchains/cxx/BUILD | 76 ++++++++ buck/toolchains/genrule/BUILD | 4 + buck/toolchains/python-bootstrap/BUILD | 61 ++++++ buck/toolchains/python-bootstrap/defs.bzl | 82 ++++++++ buck/toolchains/rust/BUILD | 39 ++++ flake.nix | 3 + 26 files changed, 789 insertions(+) create mode 100644 .buckconfig create mode 100644 .buckroot create mode 100644 buck/.gitattributes create mode 100644 buck/mode/.buckconfig create mode 100644 buck/mode/BUILD create mode 100644 buck/mode/PACKAGE create mode 100644 buck/mode/debug create mode 100644 buck/mode/local create mode 100644 buck/mode/release create mode 100644 buck/mode/remote create mode 100644 buck/platforms/BUILD create mode 100644 buck/platforms/defs.bzl create mode 100644 buck/shims/jj.bzl create mode 100644 buck/shims/noprelude.bzl create mode 100644 buck/shims/third_party_rust.bzl create mode 100644 buck/third-party/.buckconfig create mode 100644 buck/toolchains/.buckconfig create mode 100644 buck/toolchains/BUILD create mode 100644 buck/toolchains/PACKAGE create mode 100644 buck/toolchains/cxx/BUILD create mode 100644 buck/toolchains/genrule/BUILD create mode 100644 buck/toolchains/python-bootstrap/BUILD create mode 100644 buck/toolchains/python-bootstrap/defs.bzl create mode 100644 buck/toolchains/rust/BUILD diff --git a/.buckconfig b/.buckconfig new file mode 100644 index 0000000000..0c2f2dc25b --- /dev/null +++ b/.buckconfig @@ -0,0 +1,115 @@ +[cells] +# 'cells' that are defined in the project. all 'jj' code should remain under +# 'root', while 'prelude' is the prelude, and third-party is where any vendored +# code should go. +root = . +mode = buck/mode +prelude = buck/prelude +toolchains = buck/toolchains +third-party = buck/third-party +none = none + +[external_cells] +# use the built-in prelude that is packaged inside of the buck2 executable. at +# any time we could vendor it, or use a 'git' cell, if we needed to apply custom +# patches +prelude = bundled + +[cell_aliases] +# these aliases are all required by the upstream buck2 prelude, with stubs for +# meta-specific cells. 'config//' is occasionally useful for select() calls +config = prelude +buck = none +fbcode = none +fbsource = none + +[buildfile] +name = BUILD +# for the sake of future compatibility and migrations, we don't want any BUILD +# files in the project to use raw, un-imported symbols from the prelude like +# 'cxx_library()'; we instead want to make sure every rule is explicitly +# wrapped, load()ed and called, i.e. they should use 'jj.cxx_library()' instead. +# do this by loading noprelude.bzl into every BUILD file, which will stub out +# these bad symbols with an error message. +includes = root//buck/shims/noprelude.bzl + +[buck2] +# use sha256 since everything supports it. XXX FIXME (aseipp): blake3? +digest_algorithms = SHA256 + +# enable deferred materialization. this means that intermediate outputs will +# never get written to disk, and instead will be stored in the remote cache for +# all intermediate execution steps. +# +# we don' use RE yet, but keep these enabled so we don' have to change things or +# find problems later. this also enables (local disk) sqlite materialization +# state, and defers writes to the end of actions to help improve performance. +materializations = deferred +sqlite_materializer_state = true +defer_write_actions = true + +# hash all commands in the action graph; this helps avoid some spurious +# recompilations when the action graph changes, but the actual commands don't. +# NOTE: this requires `materializations = deferred` +hash_all_commands = true + +# deferred materialization requires that cache outputs never expire. if they do, +# a command might fail if it expects a hit on an object that was supposed to be +# an input. in that case, the buck2d daemon needs to restart to 'purge' its +# knowledge of that object. this enables that. +restarter = true + +# enable checking the peak memory in the interpreter, and also set a byte limit +# for the interpreter. this is useful for catching runaway memory usage in BUILD +# files just in case people start going crazy with them. +check_starlark_peak_memory = true +# default limit is 5MiB = 5 * 1024 * 1024 = 5242880 bytes +default_starlark_peak_memory = 5242880 +# also, enforce a max callstack size to prevent ridiculous stack sizes and +# put a limit on how deep/abstract things can get. +starlark_max_callstack_size = 50 + +[build] +# set the default execution platform for builds on this machine. NOTE: this +# platform definition is where remote execution (optionally) is enabled via +# ExecutionPlatformRegistrationInfo +execution_platforms = root//buck/platforms:default + +[parser] +# set the default execution platform for several target patterns. this is +# required; the main documentation for the format is the source code, I think... +target_platform_detector_spec = \ + target:root//...->root//buck/platforms:default \ + target:third-party//...->root//buck/platforms:default \ + target:toolchains//...->root//buck/platforms:default + +[project] +# things that should not be scanned by buck2 for file changes. if you notice +# something strange is being scanned, it might be worth adding here. +ignore = \ + .jj, \ + .git, \ + .direnv, \ + .watchman-cookie** \ + target + +[buck2_re_client] +# default address for the cas/actioncache. this should be public for users so +# they can always get build results. this does NOT include the 'engine_address' +# service, which enables actual remote execution. that must be enabled +# explicitly in .buckconfig.local +cas_address = https://builds.example.com +action_cache_address = https://builds.example.com + +# 'instance name', which in RBE is the basic unit of isolation for projects; we +# always default this for simplicity +instance_name = jujutsu + +# always use TLS for all build products +tls = true + +# in .buckconfig.local: +# +# [buck2_re_client] +# engine_address = https://builds.jujutsu.dev +# http_headers = x-build-api-key:$BUILD_API_KEY diff --git a/.buckroot b/.buckroot new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.vscode/settings.json b/.vscode/settings.json index 7c26e7256e..9d61605e83 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,4 +1,13 @@ { "files.insertFinalNewline": true, "files.trimTrailingWhitespace": true, + + "files.associations": { + ".buckconfig": "ini", + ".buckconfig.local": "ini", + "*.bzl": "starlark", + "*.bxl": "starlark", + "BUILD": "starlark", + "PACKAGE": "starlark", + }, } diff --git a/buck/.gitattributes b/buck/.gitattributes new file mode 100644 index 0000000000..f5abb8d9d9 --- /dev/null +++ b/buck/.gitattributes @@ -0,0 +1,2 @@ +prelude/* linguist-generated=true merge=binary +prelude/**/* linguist-generated=true merge=binary diff --git a/buck/mode/.buckconfig b/buck/mode/.buckconfig new file mode 100644 index 0000000000..5b94fe87c4 --- /dev/null +++ b/buck/mode/.buckconfig @@ -0,0 +1,5 @@ +[cells] +mode = . + +[buildfile] +name = BUILD diff --git a/buck/mode/BUILD b/buck/mode/BUILD new file mode 100644 index 0000000000..462583e103 --- /dev/null +++ b/buck/mode/BUILD @@ -0,0 +1,18 @@ + +MODES = [ 'debug', 'release' ] + +constraint_setting(name = 'build-mode') + +[ + constraint_value( + name = f'build-mode-{name}', + constraint_setting = ':build-mode' + ) for name in MODES +] + +[ + config_setting( + name = name, + constraint_values = [ f'mode//:build-mode-{name}' ] + ) for name in MODES +] diff --git a/buck/mode/PACKAGE b/buck/mode/PACKAGE new file mode 100644 index 0000000000..5019e6766b --- /dev/null +++ b/buck/mode/PACKAGE @@ -0,0 +1,4 @@ + +package( + visibility = [ 'PUBLIC' ], +) diff --git a/buck/mode/debug b/buck/mode/debug new file mode 100644 index 0000000000..a70594dd92 --- /dev/null +++ b/buck/mode/debug @@ -0,0 +1 @@ +--config=jj.buildmode=debug diff --git a/buck/mode/local b/buck/mode/local new file mode 100644 index 0000000000..4345310332 --- /dev/null +++ b/buck/mode/local @@ -0,0 +1 @@ +--config=buck2_re_client.default_enabled=false diff --git a/buck/mode/release b/buck/mode/release new file mode 100644 index 0000000000..8ef06ef9d8 --- /dev/null +++ b/buck/mode/release @@ -0,0 +1 @@ +--config=jj.buildmode=release diff --git a/buck/mode/remote b/buck/mode/remote new file mode 100644 index 0000000000..19c2368413 --- /dev/null +++ b/buck/mode/remote @@ -0,0 +1 @@ +--config=buck2_re_client.default_enabled=true diff --git a/buck/platforms/BUILD b/buck/platforms/BUILD new file mode 100644 index 0000000000..685d786732 --- /dev/null +++ b/buck/platforms/BUILD @@ -0,0 +1,14 @@ +load("@prelude//utils/buckconfig.bzl", "read_choice") +load(":defs.bzl", "generate_platforms", "default_platforms") + +build_config = read_choice("jj", "buildmode", [ + "debug", + "release", +], "debug") + +default_constraints = [ + # build mode: debug or release + ('mode//:{}'.format(build_config)) +] + +generate_platforms(default_platforms, default_constraints) diff --git a/buck/platforms/defs.bzl b/buck/platforms/defs.bzl new file mode 100644 index 0000000000..1e9f135cfe --- /dev/null +++ b/buck/platforms/defs.bzl @@ -0,0 +1,221 @@ +def constraint_with_values(name, values, **kwargs): + """Declare a constraint setting with a set of values.""" + + native.constraint_setting( + name = name, + **kwargs, + ) + + for value in values: + native.constraint_value( + name = value, + constraint = ":{}".format(name), + **kwargs, + ) + +def _execution_platform_impl(ctx: AnalysisContext) -> list[Provider]: + constraints = dict() + constraints.update(ctx.attrs.cpu_configuration[ConfigurationInfo].constraints) + constraints.update(ctx.attrs.os_configuration[ConfigurationInfo].constraints) + for x in ctx.attrs.constraints: + constraints.update(x[ConfigurationInfo].constraints) + + cfg = ConfigurationInfo(constraints = constraints, values = {}) + + name = ctx.label.raw_target() + re_enabled = ctx.attrs.remote_enabled + os = ctx.attrs.os + + re_properties = {} + if re_enabled: + if os == "linux": + re_properties = { + "OSFamily": "Linux", + "container-image": "nix-bb-runner", + } + elif os == "macos": + re_enabled = False # TODO FIXME (aseipp): support macos + re_properties = { + "OSFamily": "Darwin", + # ... + } + elif os == "windows": + re_enabled = False # TODO FIXME (aseipp): support windows + re_properties = { + "OSFamily": "Windows", + # ... + } + else: + fail("Invalid OS for remote execution: {}".format(os)) + + # Configuration of how a command should be executed. + force_remote_exe = re_enabled and (read_root_config("buck2_re_client", "force_remote", "false") == "true") + allow_local_fallback = re_enabled and (read_root_config("buck2_re_client", "allow_local_fallback", "false") == "true") + exe_cfg = CommandExecutorConfig( + # Whether to use local execution for this execution platform. If both + # remote_enabled and local_enabled are True, we will use the hybrid + # executor + local_enabled = True, + + # Whether to use remote execution for this execution platform + remote_enabled = re_enabled, + + # Whether to use the "limited" hybrid executor. If the hybrid + # executor is active, by default, it will race the two executors + # to completion until one finishes. If the limited hybrid executor + # is enabled, then both are exposed, but only the preferred one + # is chosen. Finally, if allow_limited_hybrid_fallbacks is true, + # then if the preferred executor fails, the other executor will be + # tried. + use_limited_hybrid = force_remote_exe, + allow_limited_hybrid_fallbacks = allow_local_fallback, + experimental_low_pass_filter = re_enabled and not force_remote_exe, + + # Use and query the RE cache + remote_cache_enabled = re_enabled, + + # Whether to upload local actions to the RE cache + allow_cache_uploads = re_enabled, + + # Whether to use Windows path separators in command line arguments + use_windows_path_separators = os == "windows", + + # Properties for remote execution for this platform. BuildBarn will + # match these properties against the properties of the remote workers it + # has attached; all fields must match. + remote_execution_properties = re_properties, + + # The use case to use when communicating with RE. + remote_execution_use_case = "buck2-default", + + # How to express output paths to RE. This is used internally for the + # FB RE implementation and the FOSS implementation; strict means that + # the RE implementation should expect the output paths to be specified + # as files or directories in all cases, and that's what the Remote + # Execution API expects. So this will never change. + remote_output_paths = "strict", + + # Max file size that the RE system can support + remote_execution_max_input_files_mebibytes = None, # default: 30 * 1024 * 1024 * 1024 + + # Max time we're willing to wait in the RE queue + remote_execution_queue_time_threshold_s = None, + + remote_dep_file_cache_enabled = False, + ) + + exe_platform = ExecutionPlatformInfo( + label = name, + configuration = cfg, + executor_config = exe_cfg, + ) + + return [ + DefaultInfo(), + exe_platform, + PlatformInfo(label = str(name), configuration = cfg), + ExecutionPlatformRegistrationInfo(platforms = [exe_platform]), + ] + +__execution_platform = rule( + impl = _execution_platform_impl, + attrs = { + "cpu_configuration": attrs.dep(providers = [ConfigurationInfo]), + "os_configuration": attrs.dep(providers = [ConfigurationInfo]), + "constraints": attrs.list(attrs.dep(providers = [ConfigurationInfo]), default = []), + "remote_enabled": attrs.bool(default = False), + "cpu": attrs.string(), + "os": attrs.string(), + }, +) + +def _host_cpu_configuration() -> str: + arch = host_info().arch + if arch.is_aarch64: + return "config//cpu:arm64" + else: + return "config//cpu:x86_64" + +def _host_os_configuration() -> str: + os = host_info().os + if os.is_macos: + return "config//os:macos" + elif os.is_windows: + return "config//os:windows" + else: + return "config//os:linux" + +def generate_platforms(variants, constraints=[]): + """Generate execution platforms for the given variants, as well as a default + execution platform matching the host platform.""" + + # We want to generate a remote-execution capable variant of every supported + # platform (-re suffix) as well as a local variant (-local suffix) for the + # current execution platform that buck2 is running on. + default_alias_prefix = "none//fake:nonexistent" + for (cpu, os) in variants: + cpu_configuration = "config//cpu:{}".format(cpu) + os_configuration = "config//os:{}".format(os) + + # always generate generate a remote-execution variant + __execution_platform( + name = "{}-{}-remote".format(cpu, os), + cpu_configuration = cpu_configuration, + os_configuration = os_configuration, + constraints = constraints, + remote_enabled = True, + cpu = cpu, + os = os, + ) + + # and, if it matches the host platform: generate a -local variant, too, + # so builds can happen locally as well. + if _host_cpu_configuration() == cpu_configuration and _host_os_configuration() == os_configuration: + default_alias_prefix = "root//buck/platforms:{}-{}".format(cpu, os) + __execution_platform( + name = "{}-{}-local".format(cpu, os), + cpu_configuration = cpu_configuration, + os_configuration = os_configuration, + constraints = constraints, + remote_enabled = False, + cpu = cpu, + os = os, + ) + + # default to remote compilation being turned off; enable it if the + # buck2_re_client.default_enabled option is set to "true", but only on + # supported platforms. set it to "force-true" to unconditionally enable it, + # which is useful for testing and platform bringup. + remote_default = False + re_default_enabled = read_root_config("buck2_re_client", "default_enabled", "false") + + if re_default_enabled == "true": + if host_info().os.is_linux and not host_info().arch.is_aarch64: + remote_default = True + else: + # TODO FIXME (aseipp): enable on all platforms + remote_default = False + elif re_default_enabled == "false": + remote_default = False + elif re_default_enabled == "force-true": + remote_default = True + else: + fail('Invalid buck2_re_client.default_enabled setting: {}'.format(re_default_enabled)) + + # now, alias() it to the proper local or remote build + native.alias( + name = "default", + actual = "{}-{}".format(default_alias_prefix, "remote" if remote_default else "local"), + ) + +# NOTE: keep the list of default platforms here instead of in BUILD. why? +# because it keeps all the internal specifics like _host_cpu_configuration and +# _host_os_configuration literals all in one spot. +default_platforms = [ + ("arm64", "linux"), + ("arm64", "macos"), + #("arm64", "windows"), + ("x86_64", "linux"), + #("x86_64", "macos"), + ("x86_64", "windows"), +] diff --git a/buck/shims/jj.bzl b/buck/shims/jj.bzl new file mode 100644 index 0000000000..5c62fa225b --- /dev/null +++ b/buck/shims/jj.bzl @@ -0,0 +1,50 @@ + +# version of JJ for the user to see +# XXX FIXME (aseipp): unify this with Cargo.toml, somehow? +JJ_VERSION = '0.22.0-buck2' + +# wrap native.rust_*, but provide some extra default args +def _jj_rust_rule(rule_name: str, **kwargs): + edition = kwargs.pop('edition', '2021') + env = { + 'JJ_VERSION': JJ_VERSION, + } | kwargs.pop('env', {}) + rustc_flags = [ + '--cfg=buck_build', + ] + kwargs.pop('rustc_flags', []) + + fn = getattr(native, rule_name) + fn( + edition = edition, + env = env, + rustc_flags = rustc_flags, + # XXX FIXME (aseipp): incrementality should be optional based on the + # build mode, but also not dependent directly on read_config, so as not + # to invalidate cache hits. fix when real modes are possible + incremental_enabled = True, + **kwargs, + ) + +def _jj_rust_library(**kwargs): + _jj_rust_rule('rust_library', **kwargs) + +def _jj_rust_binary(**kwargs): + _jj_rust_rule('rust_binary', **kwargs) + +def _jj_cxx_library(**_kwargs): + native.cxx_library(**_kwargs) + +def _jj_cxx_binary(**_kwargs): + native.cxx_binary(**_kwargs) + +def _jj_prebuilt_cxx_library(**_kwargs): + native.prebuilt_cxx_library(**_kwargs) + +jj = struct( + rust_library = _jj_rust_library, + rust_binary = _jj_rust_binary, + + cxx_library = _jj_cxx_library, + prebuilt_cxx_library = _jj_prebuilt_cxx_library, + cxx_binary = _jj_cxx_binary, +) diff --git a/buck/shims/noprelude.bzl b/buck/shims/noprelude.bzl new file mode 100644 index 0000000000..3109c1585c --- /dev/null +++ b/buck/shims/noprelude.bzl @@ -0,0 +1,15 @@ + +def cxx_library(**kwargs): + fail('use load("@root//buck/shims/jj.bzl", "jj") and call jj.cxx_library() instead') + +def cxx_binary(**kwargs): + fail('use load("@root//buck/shims/jj.bzl", "jj") and call jj.cxx_binary() instead') + +def prebuilt_cxx_library(**kwargs): + fail('use load("@root//buck/shims/jj.bzl", "jj") and call jj.prebuilt_cxx_library() instead') + +def rust_library(**kwargs): + fail('use load("@root//buck/shims/jj.bzl", "jj") and call jj.rust_library() instead') + +def rust_binary(**kwargs): + fail('use load("@root//buck/shims/jj.bzl", "jj") and call jj.rust_binary() instead') diff --git a/buck/shims/third_party_rust.bzl b/buck/shims/third_party_rust.bzl new file mode 100644 index 0000000000..7bbec68d2d --- /dev/null +++ b/buck/shims/third_party_rust.bzl @@ -0,0 +1,24 @@ +load("@prelude//rust:cargo_package.bzl", "cargo") +load("@prelude//rust:cargo_buildscript.bzl", "buildscript_run") + +load(":jj.bzl", "jj") + +def _rust_library(**_kwargs): + cargo.rust_library(**_kwargs) + +def _rust_binary(**_kwargs): + cargo.rust_binary(**_kwargs) + +def _cxx_library(**_kwargs): + jj.cxx_library(**_kwargs) + +def _prebuilt_cxx_library(**_kwargs): + jj.prebuilt_cxx_library(**_kwargs) + +third_party_rust = struct( + rust_library = _rust_library, + rust_binary = _rust_binary, + cxx_library = _cxx_library, + prebuilt_cxx_library = _prebuilt_cxx_library, + buildscript_run = buildscript_run, +) diff --git a/buck/third-party/.buckconfig b/buck/third-party/.buckconfig new file mode 100644 index 0000000000..496a0ebbc7 --- /dev/null +++ b/buck/third-party/.buckconfig @@ -0,0 +1,7 @@ +[cells] +third-party = . + +[buildfile] +name = BUILD +# see root .buckconfig for more information +includes = root//buck/shims/noprelude.bzl diff --git a/buck/toolchains/.buckconfig b/buck/toolchains/.buckconfig new file mode 100644 index 0000000000..452c0c76dc --- /dev/null +++ b/buck/toolchains/.buckconfig @@ -0,0 +1,7 @@ +[cells] +toolchains = . + +[buildfile] +name = BUILD +# see root .buckconfig for more information +includes = root//buck/shims/noprelude.bzl diff --git a/buck/toolchains/BUILD b/buck/toolchains/BUILD new file mode 100644 index 0000000000..03d0ae5c0f --- /dev/null +++ b/buck/toolchains/BUILD @@ -0,0 +1,25 @@ + +toolchain_alias( + name = 'genrule', + actual = 'toolchains//genrule:genrule', +) + +toolchain_alias( + name = 'python_bootstrap', + actual = 'toolchains//python-bootstrap:python_bootstrap', +) + +toolchain_alias( + name = 'rust', + actual = 'toolchains//rust:rust', +) + +toolchain_alias( + name = 'cxx', + actual = 'toolchains//cxx:cxx', +) + +toolchain_alias( + name = 'deno', + actual = 'toolchains//deno:deno', +) diff --git a/buck/toolchains/PACKAGE b/buck/toolchains/PACKAGE new file mode 100644 index 0000000000..5019e6766b --- /dev/null +++ b/buck/toolchains/PACKAGE @@ -0,0 +1,4 @@ + +package( + visibility = [ 'PUBLIC' ], +) diff --git a/buck/toolchains/cxx/BUILD b/buck/toolchains/cxx/BUILD new file mode 100644 index 0000000000..d5361a57ee --- /dev/null +++ b/buck/toolchains/cxx/BUILD @@ -0,0 +1,76 @@ + +load("@prelude//toolchains:cxx.bzl", "system_cxx_toolchain") + +toolchain_alias( + name = 'cxx', + actual = select({ + "mode//:debug": ":cxx-debug", + "mode//:release": ":cxx-release", + }), +) + +cxx_warn_flags = select({ + "config//os:macos": [ + # NOTE (aseipp): some apparently ancient zlib code in the zlib-sys crate + # needs this, otherwise builds fail on sufficiently recent macOS systems due + # to C2X support officially making this an error by default + "-Wno-implicit-function-declaration", + ], + "DEFAULT": [], +}) + +cxx_link_flags = select({ + "config//os:linux": [ + # on Linux, always use mold + "-fuse-ld=mold" + ], + + "config//os:macos": [ + # on macOS, use the new parallel linker + "-fuse-ld=/usr/bin/ld", + "-ld_new", + "-framework", + "Security", + ], + + # on Windows, suffer + "config//os:windows": [ + "winhttp.lib", + "rpcrt4.lib", + "ole32.lib", + "crypt32.lib", + "secur32.lib", + "user32.lib", + ], +}) + +debug_opt_flags = select({ + "config//os:windows": ["/Od"], + "DEFAULT": ["-Og"], +}) + +release_opt_flags = select({ + "config//os:windows": ["/O2"], + "DEFAULT": ["-O3"], +}) + +cxx_linker = select({ + "config//os:windows": "link.exe", + "DEFAULT": "clang++", +}) + +system_cxx_toolchain( + name = "cxx-debug", + c_flags = debug_opt_flags + cxx_warn_flags, + cxx_flags = debug_opt_flags + cxx_warn_flags, + linker = cxx_linker, + link_flags = cxx_link_flags, +) + +system_cxx_toolchain( + name = "cxx-release", + c_flags = release_opt_flags + cxx_warn_flags, + cxx_flags = release_opt_flags + cxx_warn_flags, + linker = cxx_linker, + link_flags = cxx_link_flags, +) diff --git a/buck/toolchains/genrule/BUILD b/buck/toolchains/genrule/BUILD new file mode 100644 index 0000000000..34584bb821 --- /dev/null +++ b/buck/toolchains/genrule/BUILD @@ -0,0 +1,4 @@ + +load("@prelude//toolchains:genrule.bzl", "system_genrule_toolchain") + +system_genrule_toolchain(name = "genrule") diff --git a/buck/toolchains/python-bootstrap/BUILD b/buck/toolchains/python-bootstrap/BUILD new file mode 100644 index 0000000000..0f82726ee9 --- /dev/null +++ b/buck/toolchains/python-bootstrap/BUILD @@ -0,0 +1,61 @@ + +load(":defs.bzl", + "simple_exe_download", + "standalone_python_download", + "standalone_python_bootstrap_toolchain", +) + +PYTHON_VERSION_TAG = '20240415' +PYTHON_VERSION = f'3.12.3+{PYTHON_VERSION_TAG}' + +standalone_python_bootstrap_toolchain( + name = "python_bootstrap", + interpreter = select({ + 'config//cpu:arm64': select({ + 'config//os:linux': f'$(location :cpython-{PYTHON_VERSION}-aarch64-unknown-linux-gnu.tar.gz[python/bin/python])', + 'config//os:macos': f'$(location :cpython-{PYTHON_VERSION}-aarch64-apple-darwin.tar.gz[python/bin/python])', + }), + 'config//cpu:x86_64': select({ + 'config//os:linux': f'$(location :cpython-{PYTHON_VERSION}-x86_64-unknown-linux-gnu.tar.gz[python/bin/python])', + 'config//os:windows': f'$(location :cpython-{PYTHON_VERSION}-x86_64-pc-windows-msvc.tar.gz[python/python.exe])', + }), + }), +) + +[ + standalone_python_download( + name = f'cpython-{PYTHON_VERSION}-{name}.tar.gz', + sha256 = sha256, + url = f'https://github.com/indygreg/python-build-standalone/releases/download/{PYTHON_VERSION_TAG}/cpython-{PYTHON_VERSION}-{name}-install_only.tar.gz', + exe = bin, + smoltar = select({ + 'config//cpu:arm64': select({ + 'config//os:linux': ':smoltar-aarch64-unknown-linux-musl', + 'config//os:macos': ':smoltar-aarch64-apple-darwin', + }), + 'config//cpu:x86_64': select({ + 'config//os:linux': ':smoltar-x86_64-unknown-linux-musl', + 'config//os:windows': ':smoltar-x86_64-pc-windows-msvc.exe', + }), + }), + visibility = [], + ) for name, sha256, bin in [ + ('aarch64-unknown-linux-gnu', 'ec8126de97945e629cca9aedc80a29c4ae2992c9d69f2655e27ae73906ba187d', 'python/bin/python'), + ('aarch64-apple-darwin', 'ccc40e5af329ef2af81350db2a88bbd6c17b56676e82d62048c15d548401519e', 'python/bin/python'), + ('x86_64-unknown-linux-gnu', 'a73ba777b5d55ca89edef709e6b8521e3f3d4289581f174c8699adfb608d09d6', 'python/bin/python'), + ('x86_64-pc-windows-msvc', 'f7cfa4ad072feb4578c8afca5ba9a54ad591d665a441dd0d63aa366edbe19279', 'python/python.exe'), + ] +] + +[ + simple_exe_download( + name = name, + sha256 = sha256, + url = f'https://github.com/thoughtpolice/smoltar/releases/download/v0/{name}', + ) for name, sha256 in [ + ('smoltar-aarch64-apple-darwin', 'd8964e7bdc8516130012302ea06d18cb130cee13e85145446f8ae473679fc7d4'), + ('smoltar-aarch64-unknown-linux-musl', 'e1a0e2e4b102823c56fa96323d88fdef499ae855dca657d03582558cf48fc65f'), + ('smoltar-x86_64-unknown-linux-musl', '3f727c5ada7a038f7e60afd003181779440fc11907cfece8a59c6be435ad3e67'), + ('smoltar-x86_64-pc-windows-msvc.exe', '9b4ea3d1f3414574f16c23c2434d26e4f3cf67804db9d07d50ef3a00d7963184'), + ] +] diff --git a/buck/toolchains/python-bootstrap/defs.bzl b/buck/toolchains/python-bootstrap/defs.bzl new file mode 100644 index 0000000000..398483f50c --- /dev/null +++ b/buck/toolchains/python-bootstrap/defs.bzl @@ -0,0 +1,82 @@ + +load( + "@prelude//python_bootstrap:python_bootstrap.bzl", + "PythonBootstrapToolchainInfo", +) + +def _simple_exe_download(ctx): + output = ctx.actions.declare_output(ctx.label.name) + ctx.actions.download_file( + output.as_output(), + ctx.attrs.url, + sha256 = ctx.attrs.sha256, + is_executable = True, + ) + return [ + DefaultInfo(default_output = output), + RunInfo(args = cmd_args([output])), + ] + +simple_exe_download = rule( + impl = _simple_exe_download, + attrs = { + "url": attrs.string(), + "sha256": attrs.string(), + }, +) + +def _standalone_python_download(ctx): + output = ctx.actions.declare_output("tar", ctx.label.name) + ctx.actions.download_file( + output.as_output(), + ctx.attrs.url, + sha256 = ctx.attrs.sha256, + ) + + out_dir = ctx.actions.declare_output("dir", ctx.label.name, dir = True) + ctx.actions.run( + cmd_args([ + ctx.attrs.smoltar[DefaultInfo].default_outputs[0], + "-x", + output, + out_dir.as_output(), + ]), + category = "system_tar" + ) + + bin = out_dir.project(ctx.attrs.exe) + return [ + DefaultInfo( + default_output = out_dir, + sub_targets = { + ctx.attrs.exe: [ DefaultInfo(default_output = bin) ], + } + ), + RunInfo(args = cmd_args([bin])), + ] + +standalone_python_download = rule( + impl = _standalone_python_download, + attrs = { + "url": attrs.string(), + "sha256": attrs.string(), + "exe": attrs.string(), + "smoltar": attrs.exec_dep(), + }, +) + +def _standalone_python_bootstrap(ctx): + args = cmd_args([ctx.attrs.interpreter]) + return [ + DefaultInfo(), + RunInfo(args = args), + PythonBootstrapToolchainInfo(interpreter = args), + ] + +standalone_python_bootstrap_toolchain = rule( + impl = _standalone_python_bootstrap, + attrs = { + "interpreter": attrs.arg(), + }, + is_toolchain_rule = True, +) diff --git a/buck/toolchains/rust/BUILD b/buck/toolchains/rust/BUILD new file mode 100644 index 0000000000..f5577842ad --- /dev/null +++ b/buck/toolchains/rust/BUILD @@ -0,0 +1,39 @@ + +load("@prelude//toolchains:rust.bzl", "system_rust_toolchain") + +toolchain_alias( + name = 'rust', + actual = select({ + "mode//:debug": ":rust-debug", + "mode//:release": ":rust-release", + }), +) + +common_rustc_flags = select({ + 'config//os:windows': [ + # NOTE: on Windows, link the CRT statically so that users don't need + # a copy of vcruntime140.dll on their machines. its distribution is... + # complex + "-Ctarget-feature=+crt-static", + ], + 'DEFAULT': [], +}) + +system_rust_toolchain( + name = "rust-debug", + default_edition = "2021", + rustc_flags = common_rustc_flags, +) + +system_rust_toolchain( + name = "rust-release", + default_edition = "2021", + rustc_flags = common_rustc_flags + [ + "-Copt-level=3", + "-Cdebuginfo=none", + "-Cdebug-assertions=false", + "-Coverflow-checks=false", + "-Clto=false", + "-Ccodegen-units=1", + ], +) diff --git a/flake.nix b/flake.nix index 7089f58129..eef65daad6 100644 --- a/flake.nix +++ b/flake.nix @@ -171,6 +171,9 @@ # For building the documentation website poetry + + # buck2 tools + llvmPackages_latest.clang rust-bindgen ] ++ darwinDeps ++ linuxNativeDeps; shellHook = '' From 0d4d28ee5e143160fb432760477a7432051e7089 Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Tue, 25 Jun 2024 18:38:28 -0500 Subject: [PATCH 04/21] buck: build zstd Signed-off-by: Austin Seipp --- buck/third-party/zstd/BUILD | 32 ++++++++++++++++++++++++++++++++ buck/third-party/zstd/PACKAGE | 5 +++++ 2 files changed, 37 insertions(+) create mode 100644 buck/third-party/zstd/BUILD create mode 100644 buck/third-party/zstd/PACKAGE diff --git a/buck/third-party/zstd/BUILD b/buck/third-party/zstd/BUILD new file mode 100644 index 0000000000..8339c266e0 --- /dev/null +++ b/buck/third-party/zstd/BUILD @@ -0,0 +1,32 @@ + +load("@root//buck/shims/jj.bzl", "jj") + +# XXX FIXME (aseipp): download the real source, not my copy of zstd i amalgamated a few months ago + +http_archive( + name = 'src', + sha256 = '3dde08c4ceb16a1de42ed4008fa52eda01fc1b8b115012e8216b9f6d910db9e5', + urls = [ + 'https://gist.github.com/thoughtpolice/bb26bee5c02e8986760210b291e43288/archive/6bcf321e242d62765c640458cd98d407e84f33a1.tar.gz', + ], + type = 'tar.gz', + strip_prefix = "bb26bee5c02e8986760210b291e43288-6bcf321e242d62765c640458cd98d407e84f33a1", + sub_targets = [ + 'zstd.h', + 'zdict.h', + 'zstd_errors.h', + 'zstd.c', + ] +) + +jj.cxx_library( + name = 'zstd', + header_namespace = 'zstd', + exported_headers = { + 'zstd.h': ':src[zstd.h]', + 'zdict.h': ':src[zdict.h]', + 'zstd_errors.h': ':src[zstd_errors.h]', + }, + srcs = [ ':src[zstd.c]' ], + preferred_linkage = "static", +) diff --git a/buck/third-party/zstd/PACKAGE b/buck/third-party/zstd/PACKAGE new file mode 100644 index 0000000000..9bf0691b15 --- /dev/null +++ b/buck/third-party/zstd/PACKAGE @@ -0,0 +1,5 @@ + +package( + inherit = True, + visibility = [ 'PUBLIC' ], +) From 0c857ad0f6cbd9027f27aed1451f4e5e821aad93 Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Tue, 25 Jun 2024 20:01:27 -0500 Subject: [PATCH 05/21] buck: build libz Signed-off-by: Austin Seipp --- buck/third-party/libz/BUILD | 66 +++++++++++++++++++++++++++++++++++ buck/third-party/libz/PACKAGE | 5 +++ 2 files changed, 71 insertions(+) create mode 100644 buck/third-party/libz/BUILD create mode 100644 buck/third-party/libz/PACKAGE diff --git a/buck/third-party/libz/BUILD b/buck/third-party/libz/BUILD new file mode 100644 index 0000000000..722d1446cb --- /dev/null +++ b/buck/third-party/libz/BUILD @@ -0,0 +1,66 @@ + +load("@root//buck/shims/jj.bzl", "jj") + +VERSION = '1.3.1' + +http_archive( + name = 'src', + sha256 = '9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23', + urls = [ + f'https://github.com/madler/zlib/releases/download/v{VERSION}/zlib-{VERSION}.tar.gz', + ], + type = 'tar.gz', + strip_prefix = f'zlib-{VERSION}', + sub_targets = [ + "adler32.c", + "compress.c", + "crc32.c", + "deflate.c", + "infback.c", + "inffast.c", + "inflate.c", + "inftrees.c", + "trees.c", + "uncompr.c", + "zutil.c", + "gzclose.c", + "gzlib.c", + "gzread.c", + "gzwrite.c", + "zlib.h", + "zconf.h", + ], +) + +jj.cxx_library( + name = 'libz', + srcs = [ + ':src[adler32.c]', + ':src[compress.c]', + ':src[crc32.c]', + ':src[deflate.c]', + ':src[infback.c]', + ':src[inffast.c]', + ':src[inflate.c]', + ':src[inftrees.c]', + ':src[trees.c]', + ':src[uncompr.c]', + ':src[zutil.c]', + ':src[gzclose.c]', + ':src[gzlib.c]', + ':src[gzread.c]', + ':src[gzwrite.c]', + ], + preferred_linkage = "static", + headers = [], + header_namespace = "", + exported_headers = { + 'zconf.h': ':src[zconf.h]', + 'zlib.h': ':src[zlib.h]', + }, + compiler_flags = [ + "-DSTDC", + "-D_LARGEFILE64_SOURCE", + "-D_POSIX_SOURCE", + ], +) diff --git a/buck/third-party/libz/PACKAGE b/buck/third-party/libz/PACKAGE new file mode 100644 index 0000000000..9bf0691b15 --- /dev/null +++ b/buck/third-party/libz/PACKAGE @@ -0,0 +1,5 @@ + +package( + inherit = True, + visibility = [ 'PUBLIC' ], +) From b9cc44d4438f41a1e2f353b83e19f93d7a73ab9d Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Fri, 10 May 2024 17:47:13 -0500 Subject: [PATCH 06/21] buck: build boringssl `libgit2` requires `libssh2`, which in turn requires `openssl-sys`. OpenSSL is notoriously hard to vendor for a number of reasons including its build system. In contrast, while BoringSSL does not make compatibility guarantees, it is easy to vendor and is designed to be used with Bazel. The goal is that we can substitute BoringSSL for OpenSSL in `openssl-sys` as the underlying library, and `libssh2` will still work. Signed-off-by: Austin Seipp --- buck/third-party/bssl/BUILD | 154 ++++ buck/third-party/bssl/BUILD.generated.bzl | 833 ++++++++++++++++++++++ buck/third-party/bssl/PACKAGE | 5 + buck/third-party/bssl/README.md | 13 + buck/third-party/bssl/rust/BUILD | 100 +++ 5 files changed, 1105 insertions(+) create mode 100644 buck/third-party/bssl/BUILD create mode 100644 buck/third-party/bssl/BUILD.generated.bzl create mode 100644 buck/third-party/bssl/PACKAGE create mode 100644 buck/third-party/bssl/README.md create mode 100644 buck/third-party/bssl/rust/BUILD diff --git a/buck/third-party/bssl/BUILD b/buck/third-party/bssl/BUILD new file mode 100644 index 0000000000..836632cc1e --- /dev/null +++ b/buck/third-party/bssl/BUILD @@ -0,0 +1,154 @@ + +load("@root//buck/shims/jj.bzl", "jj") + +load( + ":BUILD.generated.bzl", + "crypto_headers", + "crypto_internal_headers", + "crypto_sources", + "crypto_sources_asm", + "fips_fragments", + "ssl_headers", + "ssl_internal_headers", + "ssl_sources", + "tool_headers", + "tool_sources", +) + +VERSION = "2024.2.21+g386622719ab38a4f3a484a749bd6e1e6d5fda2e0" +GIT_COMMIT = VERSION.split('g', 1)[1] + +http_archive( + name = 'src', + sha256 = 'c81ef84430272ce63f9308780981f84dae9a46179aa192f16f79370adf1d3a12', + urls = [ + 'https://github.com/google/boringssl/archive/{}.tar.gz'.format(GIT_COMMIT), + ], + type = 'tar.gz', + strip_prefix = 'boringssl-{}'.format(GIT_COMMIT), + sub_targets = + crypto_headers + \ + crypto_internal_headers + \ + crypto_sources + \ + crypto_sources_asm + \ + fips_fragments + \ + ssl_headers + \ + ssl_internal_headers + \ + ssl_sources + \ + tool_headers + \ + tool_sources + [ + # rust sources + 'src/rust/bssl-sys/src/lib.rs', + 'src/rust/bssl-sys/rust_wrapper.c', + 'src/rust/bssl-sys/rust_wrapper.h', + 'src/rust/bssl-sys/wrapper.h', + ], + visibility = ['third-party//bssl/...'], +) + +src_ref = lambda x: ':src[{}]'.format(x) + +cc_copts = [ + # Assembler option --noexecstack adds .note.GNU-stack to each object to + # ensure that binaries can be built with non-executable stack. + "-Wa,--noexecstack", + + # This list of warnings should match those in the top-level CMakeLists.txt. + "-Wall", + "-Werror", + "-Wformat=2", + "-Wsign-compare", + "-Wmissing-field-initializers", + "-Wwrite-strings", + "-Wshadow", + "-fno-common", +] +cc_copts_c11 = [ + "-std=c11", + "-Wmissing-prototypes", + "-Wold-style-definition", + "-Wstrict-prototypes", +] +cc_copts_cxx = [ + "-std=c++14", + "-Wmissing-declarations", +] + +boringssl_copts = [ + "-DBORINGSSL_IMPLEMENTATION", +] + select({ + # We assume that non-Windows builds use a GCC-compatible toolchain and that + # Windows builds do not. + "config//os:windows": [], + "DEFAULT": cc_copts, +}) + select({ + # This is needed on glibc systems to get rwlock in pthreads, but it should + # not be set on Apple platforms or FreeBSD, where it instead disables APIs + # we use. + # See compat(5), sys/cdefs.h, and https://crbug.com/boringssl/471 + "config//os:linux": ["-D_XOPEN_SOURCE=700"], + # Without WIN32_LEAN_AND_MEAN, pulls in wincrypt.h, which + # conflicts with our . + "config//os:windows": ["-DWIN32_LEAN_AND_MEAN", "-DNOMINMAX"], + "DEFAULT": [], +}) + select({ + "config//os:windows": ["-DOPENSSL_NO_ASM"], + "DEFAULT": [], +}) + +boringssl_copts_c11 = boringssl_copts + select({ + "config//os:windows": ["/std:c11"], + "DEFAULT": cc_copts_c11, +}) + +boringssl_copts_cxx = boringssl_copts + select({ + "config//os:windows": [], + "DEFAULT": cc_copts_cxx, +}) + +jj.cxx_library( + name = "crypto", + srcs = map(src_ref, crypto_sources) + select({ + "config//os:windows": [], + "DEFAULT": map(src_ref, crypto_sources_asm), + }), + compiler_flags = boringssl_copts_c11, + + header_namespace = "", + exported_headers = { + x: y for (x, y) in map(lambda x: (x[12:], src_ref(x)), crypto_headers) + }, + + preferred_linkage = "static", + linker_flags = select({ + "config//os:windows": ["-defaultlib:advapi32.lib"], + "DEFAULT": ["-pthread"], + }), +) + +jj.cxx_library( + name = "ssl", + srcs = map(src_ref, ssl_sources), + compiler_flags = boringssl_copts_cxx, + + header_namespace = "", + exported_headers = { + x: y for (x, y) in map(lambda x: (x[12:], src_ref(x)), ssl_headers) + }, + + preferred_linkage = "static", + exported_linker_flags = select({ + 'config//os:linux': [ '-lstdc++' ], + 'config//os:macos': [ '-lc++' ], + 'DEFAULT': [] + }), + deps = [ ":crypto" ], +) + +jj.cxx_binary( + name = "bssl", + srcs = map(src_ref, tool_sources), + compiler_flags = boringssl_copts_cxx, + deps = [ ":crypto", ":ssl" ], + visibility = ['PUBLIC'], +) diff --git a/buck/third-party/bssl/BUILD.generated.bzl b/buck/third-party/bssl/BUILD.generated.bzl new file mode 100644 index 0000000000..f560f525d2 --- /dev/null +++ b/buck/third-party/bssl/BUILD.generated.bzl @@ -0,0 +1,833 @@ +# This file is created by generate_build_files.py. Do not edit manually. + +ssl_headers = [ + "src/include/openssl/dtls1.h", + "src/include/openssl/srtp.h", + "src/include/openssl/ssl.h", + "src/include/openssl/ssl3.h", + "src/include/openssl/tls1.h", +] + +fips_fragments = [ + "src/crypto/fipsmodule/aes/aes.c", + "src/crypto/fipsmodule/aes/aes_nohw.c", + "src/crypto/fipsmodule/aes/key_wrap.c", + "src/crypto/fipsmodule/aes/mode_wrappers.c", + "src/crypto/fipsmodule/bn/add.c", + "src/crypto/fipsmodule/bn/asm/x86_64-gcc.c", + "src/crypto/fipsmodule/bn/bn.c", + "src/crypto/fipsmodule/bn/bytes.c", + "src/crypto/fipsmodule/bn/cmp.c", + "src/crypto/fipsmodule/bn/ctx.c", + "src/crypto/fipsmodule/bn/div.c", + "src/crypto/fipsmodule/bn/div_extra.c", + "src/crypto/fipsmodule/bn/exponentiation.c", + "src/crypto/fipsmodule/bn/gcd.c", + "src/crypto/fipsmodule/bn/gcd_extra.c", + "src/crypto/fipsmodule/bn/generic.c", + "src/crypto/fipsmodule/bn/jacobi.c", + "src/crypto/fipsmodule/bn/montgomery.c", + "src/crypto/fipsmodule/bn/montgomery_inv.c", + "src/crypto/fipsmodule/bn/mul.c", + "src/crypto/fipsmodule/bn/prime.c", + "src/crypto/fipsmodule/bn/random.c", + "src/crypto/fipsmodule/bn/rsaz_exp.c", + "src/crypto/fipsmodule/bn/shift.c", + "src/crypto/fipsmodule/bn/sqrt.c", + "src/crypto/fipsmodule/cipher/aead.c", + "src/crypto/fipsmodule/cipher/cipher.c", + "src/crypto/fipsmodule/cipher/e_aes.c", + "src/crypto/fipsmodule/cipher/e_aesccm.c", + "src/crypto/fipsmodule/cmac/cmac.c", + "src/crypto/fipsmodule/dh/check.c", + "src/crypto/fipsmodule/dh/dh.c", + "src/crypto/fipsmodule/digest/digest.c", + "src/crypto/fipsmodule/digest/digests.c", + "src/crypto/fipsmodule/digestsign/digestsign.c", + "src/crypto/fipsmodule/ec/ec.c", + "src/crypto/fipsmodule/ec/ec_key.c", + "src/crypto/fipsmodule/ec/ec_montgomery.c", + "src/crypto/fipsmodule/ec/felem.c", + "src/crypto/fipsmodule/ec/oct.c", + "src/crypto/fipsmodule/ec/p224-64.c", + "src/crypto/fipsmodule/ec/p256-nistz.c", + "src/crypto/fipsmodule/ec/p256.c", + "src/crypto/fipsmodule/ec/scalar.c", + "src/crypto/fipsmodule/ec/simple.c", + "src/crypto/fipsmodule/ec/simple_mul.c", + "src/crypto/fipsmodule/ec/util.c", + "src/crypto/fipsmodule/ec/wnaf.c", + "src/crypto/fipsmodule/ecdh/ecdh.c", + "src/crypto/fipsmodule/ecdsa/ecdsa.c", + "src/crypto/fipsmodule/hkdf/hkdf.c", + "src/crypto/fipsmodule/hmac/hmac.c", + "src/crypto/fipsmodule/md4/md4.c", + "src/crypto/fipsmodule/md5/md5.c", + "src/crypto/fipsmodule/modes/cbc.c", + "src/crypto/fipsmodule/modes/cfb.c", + "src/crypto/fipsmodule/modes/ctr.c", + "src/crypto/fipsmodule/modes/gcm.c", + "src/crypto/fipsmodule/modes/gcm_nohw.c", + "src/crypto/fipsmodule/modes/ofb.c", + "src/crypto/fipsmodule/modes/polyval.c", + "src/crypto/fipsmodule/rand/ctrdrbg.c", + "src/crypto/fipsmodule/rand/fork_detect.c", + "src/crypto/fipsmodule/rand/rand.c", + "src/crypto/fipsmodule/rand/urandom.c", + "src/crypto/fipsmodule/rsa/blinding.c", + "src/crypto/fipsmodule/rsa/padding.c", + "src/crypto/fipsmodule/rsa/rsa.c", + "src/crypto/fipsmodule/rsa/rsa_impl.c", + "src/crypto/fipsmodule/self_check/fips.c", + "src/crypto/fipsmodule/self_check/self_check.c", + "src/crypto/fipsmodule/service_indicator/service_indicator.c", + "src/crypto/fipsmodule/sha/sha1.c", + "src/crypto/fipsmodule/sha/sha256.c", + "src/crypto/fipsmodule/sha/sha512.c", + "src/crypto/fipsmodule/tls/kdf.c", +] + +ssl_internal_headers = [ + "src/ssl/internal.h", +] + +ssl_sources = [ + "src/ssl/bio_ssl.cc", + "src/ssl/d1_both.cc", + "src/ssl/d1_lib.cc", + "src/ssl/d1_pkt.cc", + "src/ssl/d1_srtp.cc", + "src/ssl/dtls_method.cc", + "src/ssl/dtls_record.cc", + "src/ssl/encrypted_client_hello.cc", + "src/ssl/extensions.cc", + "src/ssl/handoff.cc", + "src/ssl/handshake.cc", + "src/ssl/handshake_client.cc", + "src/ssl/handshake_server.cc", + "src/ssl/s3_both.cc", + "src/ssl/s3_lib.cc", + "src/ssl/s3_pkt.cc", + "src/ssl/ssl_aead_ctx.cc", + "src/ssl/ssl_asn1.cc", + "src/ssl/ssl_buffer.cc", + "src/ssl/ssl_cert.cc", + "src/ssl/ssl_cipher.cc", + "src/ssl/ssl_credential.cc", + "src/ssl/ssl_file.cc", + "src/ssl/ssl_key_share.cc", + "src/ssl/ssl_lib.cc", + "src/ssl/ssl_privkey.cc", + "src/ssl/ssl_session.cc", + "src/ssl/ssl_stat.cc", + "src/ssl/ssl_transcript.cc", + "src/ssl/ssl_versions.cc", + "src/ssl/ssl_x509.cc", + "src/ssl/t1_enc.cc", + "src/ssl/tls13_both.cc", + "src/ssl/tls13_client.cc", + "src/ssl/tls13_enc.cc", + "src/ssl/tls13_server.cc", + "src/ssl/tls_method.cc", + "src/ssl/tls_record.cc", +] + +crypto_headers = [ + "src/include/openssl/aead.h", + "src/include/openssl/aes.h", + "src/include/openssl/arm_arch.h", + "src/include/openssl/asm_base.h", + "src/include/openssl/asn1.h", + "src/include/openssl/asn1_mac.h", + "src/include/openssl/asn1t.h", + "src/include/openssl/base.h", + "src/include/openssl/base64.h", + "src/include/openssl/bio.h", + "src/include/openssl/blake2.h", + "src/include/openssl/blowfish.h", + "src/include/openssl/bn.h", + "src/include/openssl/buf.h", + "src/include/openssl/buffer.h", + "src/include/openssl/bytestring.h", + "src/include/openssl/cast.h", + "src/include/openssl/chacha.h", + "src/include/openssl/cipher.h", + "src/include/openssl/cmac.h", + "src/include/openssl/conf.h", + "src/include/openssl/cpu.h", + "src/include/openssl/crypto.h", + "src/include/openssl/ctrdrbg.h", + "src/include/openssl/curve25519.h", + "src/include/openssl/des.h", + "src/include/openssl/dh.h", + "src/include/openssl/digest.h", + "src/include/openssl/dsa.h", + "src/include/openssl/e_os2.h", + "src/include/openssl/ec.h", + "src/include/openssl/ec_key.h", + "src/include/openssl/ecdh.h", + "src/include/openssl/ecdsa.h", + "src/include/openssl/engine.h", + "src/include/openssl/err.h", + "src/include/openssl/evp.h", + "src/include/openssl/evp_errors.h", + "src/include/openssl/ex_data.h", + "src/include/openssl/experimental/dilithium.h", + "src/include/openssl/experimental/kyber.h", + "src/include/openssl/experimental/spx.h", + "src/include/openssl/hkdf.h", + "src/include/openssl/hmac.h", + "src/include/openssl/hpke.h", + "src/include/openssl/hrss.h", + "src/include/openssl/is_boringssl.h", + "src/include/openssl/kdf.h", + "src/include/openssl/lhash.h", + "src/include/openssl/md4.h", + "src/include/openssl/md5.h", + "src/include/openssl/mem.h", + "src/include/openssl/nid.h", + "src/include/openssl/obj.h", + "src/include/openssl/obj_mac.h", + "src/include/openssl/objects.h", + "src/include/openssl/opensslconf.h", + "src/include/openssl/opensslv.h", + "src/include/openssl/ossl_typ.h", + "src/include/openssl/pem.h", + "src/include/openssl/pkcs12.h", + "src/include/openssl/pkcs7.h", + "src/include/openssl/pkcs8.h", + "src/include/openssl/poly1305.h", + "src/include/openssl/pool.h", + "src/include/openssl/posix_time.h", + "src/include/openssl/rand.h", + "src/include/openssl/rc4.h", + "src/include/openssl/ripemd.h", + "src/include/openssl/rsa.h", + "src/include/openssl/safestack.h", + "src/include/openssl/service_indicator.h", + "src/include/openssl/sha.h", + "src/include/openssl/siphash.h", + "src/include/openssl/span.h", + "src/include/openssl/stack.h", + "src/include/openssl/target.h", + "src/include/openssl/thread.h", + "src/include/openssl/time.h", + "src/include/openssl/trust_token.h", + "src/include/openssl/type_check.h", + "src/include/openssl/x509.h", + "src/include/openssl/x509_vfy.h", + "src/include/openssl/x509v3.h", + "src/include/openssl/x509v3_errors.h", +] + +crypto_internal_headers = [ + "src/crypto/asn1/internal.h", + "src/crypto/bio/internal.h", + "src/crypto/bytestring/internal.h", + "src/crypto/chacha/internal.h", + "src/crypto/cipher_extra/internal.h", + "src/crypto/conf/internal.h", + "src/crypto/cpu_arm_linux.h", + "src/crypto/curve25519/curve25519_tables.h", + "src/crypto/curve25519/internal.h", + "src/crypto/des/internal.h", + "src/crypto/dilithium/internal.h", + "src/crypto/dsa/internal.h", + "src/crypto/ec_extra/internal.h", + "src/crypto/err/internal.h", + "src/crypto/evp/internal.h", + "src/crypto/fipsmodule/aes/internal.h", + "src/crypto/fipsmodule/bn/internal.h", + "src/crypto/fipsmodule/bn/rsaz_exp.h", + "src/crypto/fipsmodule/cipher/internal.h", + "src/crypto/fipsmodule/delocate.h", + "src/crypto/fipsmodule/dh/internal.h", + "src/crypto/fipsmodule/digest/internal.h", + "src/crypto/fipsmodule/digest/md32_common.h", + "src/crypto/fipsmodule/ec/builtin_curves.h", + "src/crypto/fipsmodule/ec/internal.h", + "src/crypto/fipsmodule/ec/p256-nistz-table.h", + "src/crypto/fipsmodule/ec/p256-nistz.h", + "src/crypto/fipsmodule/ec/p256_table.h", + "src/crypto/fipsmodule/ecdsa/internal.h", + "src/crypto/fipsmodule/md5/internal.h", + "src/crypto/fipsmodule/modes/internal.h", + "src/crypto/fipsmodule/rand/fork_detect.h", + "src/crypto/fipsmodule/rand/getrandom_fillin.h", + "src/crypto/fipsmodule/rand/internal.h", + "src/crypto/fipsmodule/rsa/internal.h", + "src/crypto/fipsmodule/service_indicator/internal.h", + "src/crypto/fipsmodule/sha/internal.h", + "src/crypto/fipsmodule/tls/internal.h", + "src/crypto/hrss/internal.h", + "src/crypto/internal.h", + "src/crypto/keccak/internal.h", + "src/crypto/kyber/internal.h", + "src/crypto/lhash/internal.h", + "src/crypto/obj/obj_dat.h", + "src/crypto/pkcs7/internal.h", + "src/crypto/pkcs8/internal.h", + "src/crypto/poly1305/internal.h", + "src/crypto/pool/internal.h", + "src/crypto/rsa_extra/internal.h", + "src/crypto/spx/address.h", + "src/crypto/spx/fors.h", + "src/crypto/spx/merkle.h", + "src/crypto/spx/params.h", + "src/crypto/spx/spx_util.h", + "src/crypto/spx/thash.h", + "src/crypto/spx/wots.h", + "src/crypto/trust_token/internal.h", + "src/crypto/x509/ext_dat.h", + "src/crypto/x509/internal.h", + "src/third_party/fiat/curve25519_32.h", + "src/third_party/fiat/curve25519_64.h", + "src/third_party/fiat/curve25519_64_adx.h", + "src/third_party/fiat/curve25519_64_msvc.h", + "src/third_party/fiat/p256_32.h", + "src/third_party/fiat/p256_64.h", + "src/third_party/fiat/p256_64_msvc.h", +] + +crypto_sources = [ + "src/crypto/asn1/a_bitstr.c", + "src/crypto/asn1/a_bool.c", + "src/crypto/asn1/a_d2i_fp.c", + "src/crypto/asn1/a_dup.c", + "src/crypto/asn1/a_gentm.c", + "src/crypto/asn1/a_i2d_fp.c", + "src/crypto/asn1/a_int.c", + "src/crypto/asn1/a_mbstr.c", + "src/crypto/asn1/a_object.c", + "src/crypto/asn1/a_octet.c", + "src/crypto/asn1/a_strex.c", + "src/crypto/asn1/a_strnid.c", + "src/crypto/asn1/a_time.c", + "src/crypto/asn1/a_type.c", + "src/crypto/asn1/a_utctm.c", + "src/crypto/asn1/asn1_lib.c", + "src/crypto/asn1/asn1_par.c", + "src/crypto/asn1/asn_pack.c", + "src/crypto/asn1/f_int.c", + "src/crypto/asn1/f_string.c", + "src/crypto/asn1/posix_time.c", + "src/crypto/asn1/tasn_dec.c", + "src/crypto/asn1/tasn_enc.c", + "src/crypto/asn1/tasn_fre.c", + "src/crypto/asn1/tasn_new.c", + "src/crypto/asn1/tasn_typ.c", + "src/crypto/asn1/tasn_utl.c", + "src/crypto/base64/base64.c", + "src/crypto/bio/bio.c", + "src/crypto/bio/bio_mem.c", + "src/crypto/bio/connect.c", + "src/crypto/bio/errno.c", + "src/crypto/bio/fd.c", + "src/crypto/bio/file.c", + "src/crypto/bio/hexdump.c", + "src/crypto/bio/pair.c", + "src/crypto/bio/printf.c", + "src/crypto/bio/socket.c", + "src/crypto/bio/socket_helper.c", + "src/crypto/blake2/blake2.c", + "src/crypto/bn_extra/bn_asn1.c", + "src/crypto/bn_extra/convert.c", + "src/crypto/buf/buf.c", + "src/crypto/bytestring/asn1_compat.c", + "src/crypto/bytestring/ber.c", + "src/crypto/bytestring/cbb.c", + "src/crypto/bytestring/cbs.c", + "src/crypto/bytestring/unicode.c", + "src/crypto/chacha/chacha.c", + "src/crypto/cipher_extra/cipher_extra.c", + "src/crypto/cipher_extra/derive_key.c", + "src/crypto/cipher_extra/e_aesctrhmac.c", + "src/crypto/cipher_extra/e_aesgcmsiv.c", + "src/crypto/cipher_extra/e_chacha20poly1305.c", + "src/crypto/cipher_extra/e_des.c", + "src/crypto/cipher_extra/e_null.c", + "src/crypto/cipher_extra/e_rc2.c", + "src/crypto/cipher_extra/e_rc4.c", + "src/crypto/cipher_extra/e_tls.c", + "src/crypto/cipher_extra/tls_cbc.c", + "src/crypto/conf/conf.c", + "src/crypto/cpu_aarch64_apple.c", + "src/crypto/cpu_aarch64_fuchsia.c", + "src/crypto/cpu_aarch64_linux.c", + "src/crypto/cpu_aarch64_openbsd.c", + "src/crypto/cpu_aarch64_sysreg.c", + "src/crypto/cpu_aarch64_win.c", + "src/crypto/cpu_arm_freebsd.c", + "src/crypto/cpu_arm_linux.c", + "src/crypto/cpu_intel.c", + "src/crypto/crypto.c", + "src/crypto/curve25519/curve25519.c", + "src/crypto/curve25519/curve25519_64_adx.c", + "src/crypto/curve25519/spake25519.c", + "src/crypto/des/des.c", + "src/crypto/dh_extra/dh_asn1.c", + "src/crypto/dh_extra/params.c", + "src/crypto/digest_extra/digest_extra.c", + "src/crypto/dilithium/dilithium.c", + "src/crypto/dsa/dsa.c", + "src/crypto/dsa/dsa_asn1.c", + "src/crypto/ec_extra/ec_asn1.c", + "src/crypto/ec_extra/ec_derive.c", + "src/crypto/ec_extra/hash_to_curve.c", + "src/crypto/ecdh_extra/ecdh_extra.c", + "src/crypto/ecdsa_extra/ecdsa_asn1.c", + "src/crypto/engine/engine.c", + "src/crypto/err/err.c", + "src/crypto/evp/evp.c", + "src/crypto/evp/evp_asn1.c", + "src/crypto/evp/evp_ctx.c", + "src/crypto/evp/p_dh.c", + "src/crypto/evp/p_dh_asn1.c", + "src/crypto/evp/p_dsa_asn1.c", + "src/crypto/evp/p_ec.c", + "src/crypto/evp/p_ec_asn1.c", + "src/crypto/evp/p_ed25519.c", + "src/crypto/evp/p_ed25519_asn1.c", + "src/crypto/evp/p_hkdf.c", + "src/crypto/evp/p_rsa.c", + "src/crypto/evp/p_rsa_asn1.c", + "src/crypto/evp/p_x25519.c", + "src/crypto/evp/p_x25519_asn1.c", + "src/crypto/evp/pbkdf.c", + "src/crypto/evp/print.c", + "src/crypto/evp/scrypt.c", + "src/crypto/evp/sign.c", + "src/crypto/ex_data.c", + "src/crypto/fipsmodule/bcm.c", + "src/crypto/fipsmodule/fips_shared_support.c", + "src/crypto/hpke/hpke.c", + "src/crypto/hrss/hrss.c", + "src/crypto/keccak/keccak.c", + "src/crypto/kyber/kyber.c", + "src/crypto/lhash/lhash.c", + "src/crypto/mem.c", + "src/crypto/obj/obj.c", + "src/crypto/obj/obj_xref.c", + "src/crypto/pem/pem_all.c", + "src/crypto/pem/pem_info.c", + "src/crypto/pem/pem_lib.c", + "src/crypto/pem/pem_oth.c", + "src/crypto/pem/pem_pk8.c", + "src/crypto/pem/pem_pkey.c", + "src/crypto/pem/pem_x509.c", + "src/crypto/pem/pem_xaux.c", + "src/crypto/pkcs7/pkcs7.c", + "src/crypto/pkcs7/pkcs7_x509.c", + "src/crypto/pkcs8/p5_pbev2.c", + "src/crypto/pkcs8/pkcs8.c", + "src/crypto/pkcs8/pkcs8_x509.c", + "src/crypto/poly1305/poly1305.c", + "src/crypto/poly1305/poly1305_arm.c", + "src/crypto/poly1305/poly1305_vec.c", + "src/crypto/pool/pool.c", + "src/crypto/rand_extra/deterministic.c", + "src/crypto/rand_extra/forkunsafe.c", + "src/crypto/rand_extra/getentropy.c", + "src/crypto/rand_extra/ios.c", + "src/crypto/rand_extra/passive.c", + "src/crypto/rand_extra/rand_extra.c", + "src/crypto/rand_extra/trusty.c", + "src/crypto/rand_extra/windows.c", + "src/crypto/rc4/rc4.c", + "src/crypto/refcount.c", + "src/crypto/rsa_extra/rsa_asn1.c", + "src/crypto/rsa_extra/rsa_crypt.c", + "src/crypto/rsa_extra/rsa_print.c", + "src/crypto/siphash/siphash.c", + "src/crypto/spx/address.c", + "src/crypto/spx/fors.c", + "src/crypto/spx/merkle.c", + "src/crypto/spx/spx.c", + "src/crypto/spx/spx_util.c", + "src/crypto/spx/thash.c", + "src/crypto/spx/wots.c", + "src/crypto/stack/stack.c", + "src/crypto/thread.c", + "src/crypto/thread_none.c", + "src/crypto/thread_pthread.c", + "src/crypto/thread_win.c", + "src/crypto/trust_token/pmbtoken.c", + "src/crypto/trust_token/trust_token.c", + "src/crypto/trust_token/voprf.c", + "src/crypto/x509/a_digest.c", + "src/crypto/x509/a_sign.c", + "src/crypto/x509/a_verify.c", + "src/crypto/x509/algorithm.c", + "src/crypto/x509/asn1_gen.c", + "src/crypto/x509/by_dir.c", + "src/crypto/x509/by_file.c", + "src/crypto/x509/i2d_pr.c", + "src/crypto/x509/name_print.c", + "src/crypto/x509/policy.c", + "src/crypto/x509/rsa_pss.c", + "src/crypto/x509/t_crl.c", + "src/crypto/x509/t_req.c", + "src/crypto/x509/t_x509.c", + "src/crypto/x509/t_x509a.c", + "src/crypto/x509/v3_akey.c", + "src/crypto/x509/v3_akeya.c", + "src/crypto/x509/v3_alt.c", + "src/crypto/x509/v3_bcons.c", + "src/crypto/x509/v3_bitst.c", + "src/crypto/x509/v3_conf.c", + "src/crypto/x509/v3_cpols.c", + "src/crypto/x509/v3_crld.c", + "src/crypto/x509/v3_enum.c", + "src/crypto/x509/v3_extku.c", + "src/crypto/x509/v3_genn.c", + "src/crypto/x509/v3_ia5.c", + "src/crypto/x509/v3_info.c", + "src/crypto/x509/v3_int.c", + "src/crypto/x509/v3_lib.c", + "src/crypto/x509/v3_ncons.c", + "src/crypto/x509/v3_ocsp.c", + "src/crypto/x509/v3_pcons.c", + "src/crypto/x509/v3_pmaps.c", + "src/crypto/x509/v3_prn.c", + "src/crypto/x509/v3_purp.c", + "src/crypto/x509/v3_skey.c", + "src/crypto/x509/v3_utl.c", + "src/crypto/x509/x509.c", + "src/crypto/x509/x509_att.c", + "src/crypto/x509/x509_cmp.c", + "src/crypto/x509/x509_d2.c", + "src/crypto/x509/x509_def.c", + "src/crypto/x509/x509_ext.c", + "src/crypto/x509/x509_lu.c", + "src/crypto/x509/x509_obj.c", + "src/crypto/x509/x509_req.c", + "src/crypto/x509/x509_set.c", + "src/crypto/x509/x509_trs.c", + "src/crypto/x509/x509_txt.c", + "src/crypto/x509/x509_v3.c", + "src/crypto/x509/x509_vfy.c", + "src/crypto/x509/x509_vpm.c", + "src/crypto/x509/x509cset.c", + "src/crypto/x509/x509name.c", + "src/crypto/x509/x509rset.c", + "src/crypto/x509/x509spki.c", + "src/crypto/x509/x_algor.c", + "src/crypto/x509/x_all.c", + "src/crypto/x509/x_attrib.c", + "src/crypto/x509/x_crl.c", + "src/crypto/x509/x_exten.c", + "src/crypto/x509/x_name.c", + "src/crypto/x509/x_pubkey.c", + "src/crypto/x509/x_req.c", + "src/crypto/x509/x_sig.c", + "src/crypto/x509/x_spki.c", + "src/crypto/x509/x_val.c", + "src/crypto/x509/x_x509.c", + "src/crypto/x509/x_x509a.c", + "src/gen/crypto/err_data.c", +] + +crypto_sources_asm = [ + "src/crypto/curve25519/asm/x25519-asm-arm.S", + "src/crypto/hrss/asm/poly_rq_mul.S", + "src/crypto/poly1305/poly1305_arm_asm.S", + "src/gen/bcm/aesni-gcm-x86_64-apple.S", + "src/gen/bcm/aesni-gcm-x86_64-linux.S", + "src/gen/bcm/aesni-x86-apple.S", + "src/gen/bcm/aesni-x86-linux.S", + "src/gen/bcm/aesni-x86_64-apple.S", + "src/gen/bcm/aesni-x86_64-linux.S", + "src/gen/bcm/aesv8-armv7-linux.S", + "src/gen/bcm/aesv8-armv8-apple.S", + "src/gen/bcm/aesv8-armv8-linux.S", + "src/gen/bcm/aesv8-armv8-win.S", + "src/gen/bcm/aesv8-gcm-armv8-apple.S", + "src/gen/bcm/aesv8-gcm-armv8-linux.S", + "src/gen/bcm/aesv8-gcm-armv8-win.S", + "src/gen/bcm/armv4-mont-linux.S", + "src/gen/bcm/armv8-mont-apple.S", + "src/gen/bcm/armv8-mont-linux.S", + "src/gen/bcm/armv8-mont-win.S", + "src/gen/bcm/bn-586-apple.S", + "src/gen/bcm/bn-586-linux.S", + "src/gen/bcm/bn-armv8-apple.S", + "src/gen/bcm/bn-armv8-linux.S", + "src/gen/bcm/bn-armv8-win.S", + "src/gen/bcm/bsaes-armv7-linux.S", + "src/gen/bcm/co-586-apple.S", + "src/gen/bcm/co-586-linux.S", + "src/gen/bcm/ghash-armv4-linux.S", + "src/gen/bcm/ghash-neon-armv8-apple.S", + "src/gen/bcm/ghash-neon-armv8-linux.S", + "src/gen/bcm/ghash-neon-armv8-win.S", + "src/gen/bcm/ghash-ssse3-x86-apple.S", + "src/gen/bcm/ghash-ssse3-x86-linux.S", + "src/gen/bcm/ghash-ssse3-x86_64-apple.S", + "src/gen/bcm/ghash-ssse3-x86_64-linux.S", + "src/gen/bcm/ghash-x86-apple.S", + "src/gen/bcm/ghash-x86-linux.S", + "src/gen/bcm/ghash-x86_64-apple.S", + "src/gen/bcm/ghash-x86_64-linux.S", + "src/gen/bcm/ghashv8-armv7-linux.S", + "src/gen/bcm/ghashv8-armv8-apple.S", + "src/gen/bcm/ghashv8-armv8-linux.S", + "src/gen/bcm/ghashv8-armv8-win.S", + "src/gen/bcm/md5-586-apple.S", + "src/gen/bcm/md5-586-linux.S", + "src/gen/bcm/md5-x86_64-apple.S", + "src/gen/bcm/md5-x86_64-linux.S", + "src/gen/bcm/p256-armv8-asm-apple.S", + "src/gen/bcm/p256-armv8-asm-linux.S", + "src/gen/bcm/p256-armv8-asm-win.S", + "src/gen/bcm/p256-x86_64-asm-apple.S", + "src/gen/bcm/p256-x86_64-asm-linux.S", + "src/gen/bcm/p256_beeu-armv8-asm-apple.S", + "src/gen/bcm/p256_beeu-armv8-asm-linux.S", + "src/gen/bcm/p256_beeu-armv8-asm-win.S", + "src/gen/bcm/p256_beeu-x86_64-asm-apple.S", + "src/gen/bcm/p256_beeu-x86_64-asm-linux.S", + "src/gen/bcm/rdrand-x86_64-apple.S", + "src/gen/bcm/rdrand-x86_64-linux.S", + "src/gen/bcm/rsaz-avx2-apple.S", + "src/gen/bcm/rsaz-avx2-linux.S", + "src/gen/bcm/sha1-586-apple.S", + "src/gen/bcm/sha1-586-linux.S", + "src/gen/bcm/sha1-armv4-large-linux.S", + "src/gen/bcm/sha1-armv8-apple.S", + "src/gen/bcm/sha1-armv8-linux.S", + "src/gen/bcm/sha1-armv8-win.S", + "src/gen/bcm/sha1-x86_64-apple.S", + "src/gen/bcm/sha1-x86_64-linux.S", + "src/gen/bcm/sha256-586-apple.S", + "src/gen/bcm/sha256-586-linux.S", + "src/gen/bcm/sha256-armv4-linux.S", + "src/gen/bcm/sha256-armv8-apple.S", + "src/gen/bcm/sha256-armv8-linux.S", + "src/gen/bcm/sha256-armv8-win.S", + "src/gen/bcm/sha256-x86_64-apple.S", + "src/gen/bcm/sha256-x86_64-linux.S", + "src/gen/bcm/sha512-586-apple.S", + "src/gen/bcm/sha512-586-linux.S", + "src/gen/bcm/sha512-armv4-linux.S", + "src/gen/bcm/sha512-armv8-apple.S", + "src/gen/bcm/sha512-armv8-linux.S", + "src/gen/bcm/sha512-armv8-win.S", + "src/gen/bcm/sha512-x86_64-apple.S", + "src/gen/bcm/sha512-x86_64-linux.S", + "src/gen/bcm/vpaes-armv7-linux.S", + "src/gen/bcm/vpaes-armv8-apple.S", + "src/gen/bcm/vpaes-armv8-linux.S", + "src/gen/bcm/vpaes-armv8-win.S", + "src/gen/bcm/vpaes-x86-apple.S", + "src/gen/bcm/vpaes-x86-linux.S", + "src/gen/bcm/vpaes-x86_64-apple.S", + "src/gen/bcm/vpaes-x86_64-linux.S", + "src/gen/bcm/x86-mont-apple.S", + "src/gen/bcm/x86-mont-linux.S", + "src/gen/bcm/x86_64-mont-apple.S", + "src/gen/bcm/x86_64-mont-linux.S", + "src/gen/bcm/x86_64-mont5-apple.S", + "src/gen/bcm/x86_64-mont5-linux.S", + "src/gen/crypto/aes128gcmsiv-x86_64-apple.S", + "src/gen/crypto/aes128gcmsiv-x86_64-linux.S", + "src/gen/crypto/chacha-armv4-linux.S", + "src/gen/crypto/chacha-armv8-apple.S", + "src/gen/crypto/chacha-armv8-linux.S", + "src/gen/crypto/chacha-armv8-win.S", + "src/gen/crypto/chacha-x86-apple.S", + "src/gen/crypto/chacha-x86-linux.S", + "src/gen/crypto/chacha-x86_64-apple.S", + "src/gen/crypto/chacha-x86_64-linux.S", + "src/gen/crypto/chacha20_poly1305_armv8-apple.S", + "src/gen/crypto/chacha20_poly1305_armv8-linux.S", + "src/gen/crypto/chacha20_poly1305_armv8-win.S", + "src/gen/crypto/chacha20_poly1305_x86_64-apple.S", + "src/gen/crypto/chacha20_poly1305_x86_64-linux.S", + "src/gen/test_support/trampoline-armv4-linux.S", + "src/gen/test_support/trampoline-armv8-apple.S", + "src/gen/test_support/trampoline-armv8-linux.S", + "src/gen/test_support/trampoline-armv8-win.S", + "src/gen/test_support/trampoline-x86-apple.S", + "src/gen/test_support/trampoline-x86-linux.S", + "src/gen/test_support/trampoline-x86_64-apple.S", + "src/gen/test_support/trampoline-x86_64-linux.S", + "src/third_party/fiat/asm/fiat_curve25519_adx_mul.S", + "src/third_party/fiat/asm/fiat_curve25519_adx_square.S", + "src/third_party/fiat/asm/fiat_p256_adx_mul.S", + "src/third_party/fiat/asm/fiat_p256_adx_sqr.S", +] + +crypto_sources_nasm = [ + "src/gen/bcm/aesni-gcm-x86_64-win.asm", + "src/gen/bcm/aesni-x86-win.asm", + "src/gen/bcm/aesni-x86_64-win.asm", + "src/gen/bcm/bn-586-win.asm", + "src/gen/bcm/co-586-win.asm", + "src/gen/bcm/ghash-ssse3-x86-win.asm", + "src/gen/bcm/ghash-ssse3-x86_64-win.asm", + "src/gen/bcm/ghash-x86-win.asm", + "src/gen/bcm/ghash-x86_64-win.asm", + "src/gen/bcm/md5-586-win.asm", + "src/gen/bcm/md5-x86_64-win.asm", + "src/gen/bcm/p256-x86_64-asm-win.asm", + "src/gen/bcm/p256_beeu-x86_64-asm-win.asm", + "src/gen/bcm/rdrand-x86_64-win.asm", + "src/gen/bcm/rsaz-avx2-win.asm", + "src/gen/bcm/sha1-586-win.asm", + "src/gen/bcm/sha1-x86_64-win.asm", + "src/gen/bcm/sha256-586-win.asm", + "src/gen/bcm/sha256-x86_64-win.asm", + "src/gen/bcm/sha512-586-win.asm", + "src/gen/bcm/sha512-x86_64-win.asm", + "src/gen/bcm/vpaes-x86-win.asm", + "src/gen/bcm/vpaes-x86_64-win.asm", + "src/gen/bcm/x86-mont-win.asm", + "src/gen/bcm/x86_64-mont-win.asm", + "src/gen/bcm/x86_64-mont5-win.asm", + "src/gen/crypto/aes128gcmsiv-x86_64-win.asm", + "src/gen/crypto/chacha-x86-win.asm", + "src/gen/crypto/chacha-x86_64-win.asm", + "src/gen/crypto/chacha20_poly1305_x86_64-win.asm", + "src/gen/test_support/trampoline-x86-win.asm", + "src/gen/test_support/trampoline-x86_64-win.asm", +] + +pki_headers = [ + "src/include/openssl/pki/certificate.h", + "src/include/openssl/pki/signature_verify_cache.h", + "src/include/openssl/pki/verify_error.h", +] + +pki_internal_headers = [ + "src/pki/cert_error_id.h", + "src/pki/cert_error_params.h", + "src/pki/cert_errors.h", + "src/pki/cert_issuer_source.h", + "src/pki/cert_issuer_source_static.h", + "src/pki/cert_issuer_source_sync_unittest.h", + "src/pki/certificate_policies.h", + "src/pki/common_cert_errors.h", + "src/pki/crl.h", + "src/pki/encode_values.h", + "src/pki/extended_key_usage.h", + "src/pki/general_names.h", + "src/pki/input.h", + "src/pki/ip_util.h", + "src/pki/mock_signature_verify_cache.h", + "src/pki/name_constraints.h", + "src/pki/nist_pkits_unittest.h", + "src/pki/ocsp.h", + "src/pki/ocsp_revocation_status.h", + "src/pki/ocsp_verify_result.h", + "src/pki/parse_certificate.h", + "src/pki/parse_name.h", + "src/pki/parse_values.h", + "src/pki/parsed_certificate.h", + "src/pki/parser.h", + "src/pki/path_builder.h", + "src/pki/pem.h", + "src/pki/revocation_util.h", + "src/pki/signature_algorithm.h", + "src/pki/simple_path_builder_delegate.h", + "src/pki/string_util.h", + "src/pki/test_helpers.h", + "src/pki/testdata/nist-pkits/pkits_testcases-inl.h", + "src/pki/trust_store.h", + "src/pki/trust_store_collection.h", + "src/pki/trust_store_in_memory.h", + "src/pki/verify_certificate_chain.h", + "src/pki/verify_certificate_chain_typed_unittest.h", + "src/pki/verify_name_match.h", + "src/pki/verify_signed_data.h", +] + +pki_sources = [ + "src/pki/cert_error_id.cc", + "src/pki/cert_error_params.cc", + "src/pki/cert_errors.cc", + "src/pki/cert_issuer_source_static.cc", + "src/pki/certificate.cc", + "src/pki/certificate_policies.cc", + "src/pki/common_cert_errors.cc", + "src/pki/crl.cc", + "src/pki/encode_values.cc", + "src/pki/extended_key_usage.cc", + "src/pki/general_names.cc", + "src/pki/input.cc", + "src/pki/ip_util.cc", + "src/pki/name_constraints.cc", + "src/pki/ocsp.cc", + "src/pki/ocsp_verify_result.cc", + "src/pki/parse_certificate.cc", + "src/pki/parse_name.cc", + "src/pki/parse_values.cc", + "src/pki/parsed_certificate.cc", + "src/pki/parser.cc", + "src/pki/path_builder.cc", + "src/pki/pem.cc", + "src/pki/revocation_util.cc", + "src/pki/signature_algorithm.cc", + "src/pki/simple_path_builder_delegate.cc", + "src/pki/string_util.cc", + "src/pki/trust_store.cc", + "src/pki/trust_store_collection.cc", + "src/pki/trust_store_in_memory.cc", + "src/pki/verify.cc", + "src/pki/verify_certificate_chain.cc", + "src/pki/verify_error.cc", + "src/pki/verify_name_match.cc", + "src/pki/verify_signed_data.cc", +] + +rust_bssl_sys = [ + "src/rust/bssl-sys/src/lib.rs", +] + +rust_bssl_crypto = [ + "src/rust/bssl-crypto/src/aead.rs", + "src/rust/bssl-crypto/src/aes.rs", + "src/rust/bssl-crypto/src/cipher/aes_cbc.rs", + "src/rust/bssl-crypto/src/cipher/aes_ctr.rs", + "src/rust/bssl-crypto/src/cipher/mod.rs", + "src/rust/bssl-crypto/src/digest.rs", + "src/rust/bssl-crypto/src/ec.rs", + "src/rust/bssl-crypto/src/ecdh.rs", + "src/rust/bssl-crypto/src/ecdsa.rs", + "src/rust/bssl-crypto/src/ed25519.rs", + "src/rust/bssl-crypto/src/hkdf.rs", + "src/rust/bssl-crypto/src/hmac.rs", + "src/rust/bssl-crypto/src/hpke.rs", + "src/rust/bssl-crypto/src/lib.rs", + "src/rust/bssl-crypto/src/macros.rs", + "src/rust/bssl-crypto/src/mem.rs", + "src/rust/bssl-crypto/src/rand.rs", + "src/rust/bssl-crypto/src/rsa.rs", + "src/rust/bssl-crypto/src/scoped.rs", + "src/rust/bssl-crypto/src/test_helpers.rs", + "src/rust/bssl-crypto/src/x25519.rs", +] + +tool_sources = [ + "src/tool/args.cc", + "src/tool/ciphers.cc", + "src/tool/client.cc", + "src/tool/const.cc", + "src/tool/digest.cc", + "src/tool/fd.cc", + "src/tool/file.cc", + "src/tool/generate_ech.cc", + "src/tool/generate_ed25519.cc", + "src/tool/genrsa.cc", + "src/tool/pkcs12.cc", + "src/tool/rand.cc", + "src/tool/server.cc", + "src/tool/sign.cc", + "src/tool/speed.cc", + "src/tool/tool.cc", + "src/tool/transport_common.cc", +] + +tool_headers = [ + "src/tool/internal.h", + "src/tool/transport_common.h", +] diff --git a/buck/third-party/bssl/PACKAGE b/buck/third-party/bssl/PACKAGE new file mode 100644 index 0000000000..9bf0691b15 --- /dev/null +++ b/buck/third-party/bssl/PACKAGE @@ -0,0 +1,5 @@ + +package( + inherit = True, + visibility = [ 'PUBLIC' ], +) diff --git a/buck/third-party/bssl/README.md b/buck/third-party/bssl/README.md new file mode 100644 index 0000000000..e5ab1bfde7 --- /dev/null +++ b/buck/third-party/bssl/README.md @@ -0,0 +1,13 @@ +## BoringSSL Notes + +When you update this package, including the git commit and archive hash, make +sure you also re-download the proper `BUILD.generated.bzl` file, which is +produced automatically by a bot in the upstream `master-with-bazel` branch: + +- https://github.com/google/boringssl/tree/master-with-bazel + +``` +curl -Lo \ + buck/third-party/cxx/bssl/BUILD.generated.bzl \ + https://raw.githubusercontent.com/google/boringssl/.../BUILD.generated.bzl +``` diff --git a/buck/third-party/bssl/rust/BUILD b/buck/third-party/bssl/rust/BUILD new file mode 100644 index 0000000000..8a63fd9255 --- /dev/null +++ b/buck/third-party/bssl/rust/BUILD @@ -0,0 +1,100 @@ + +load("@prelude//:export_exe.bzl", "export_exe") + +load("@root//buck/shims/jj.bzl", "jj") + +# MARK: main library + +# XXX HACK (aseipp): get bindgen-cli binaries everywhere, somehow +aarch64_linux = host_info().os.is_linux and host_info().arch.is_aarch64 +bindgen = 'bindgen' if aarch64_linux else '$(exe :bindgen)' + +genrule( + name = 'wrapper.rs', + out = 'wrapper.rs', + srcs = { + 'rust_wrapper.c': 'third-party//bssl:src[src/rust/bssl-sys/rust_wrapper.c]', + 'rust_wrapper.h': 'third-party//bssl:src[src/rust/bssl-sys/rust_wrapper.h]', + 'wrapper.h': 'third-party//bssl:src[src/rust/bssl-sys/wrapper.h]', + }, + cmd = f""" + {bindgen} \ + wrapper.h -o $OUT \ + --no-derive-default \ + --enable-function-attribute-detection \ + --use-core \ + --default-macro-constant-type=signed \ + --rustified-enum=point_conversion_form_t \ + --allowlist-file=".*[[:punct:]]include[[:punct:]]openssl[[:punct:]].*\\.h" \ + --experimental \ + --wrap-static-fns \ + -- -I$(location third-party//bssl:src)/src/include + """, + visibility = [], +) + +jj.rust_library( + name = 'bssl-sys', + srcs = [ + 'third-party//bssl:src[src/rust/bssl-sys/src/lib.rs]', + ], + env = { + 'BINDGEN_RS_FILE': '$(location :wrapper.rs)', + }, + deps = [ + 'third-party//bssl:ssl' + ], + visibility = ['PUBLIC'], +) + +alias( + name = 'rust', + actual = ':bssl-sys', + visibility = ['PUBLIC'], +) + +# MARK: bindgen tooling + +VERSION = '0.69.4' + +[ + http_archive( + name = f'{name}.tar.xz', + sha256 = sha256, + urls = [ f'https://github.com/rust-lang/rust-bindgen/releases/download/v{VERSION}/{name}.tar.xz', ], + type = 'tar.xz', + strip_prefix = name, + sub_targets = [ binary ], + visibility = [], + ) for name, sha256, binary in [ + ('bindgen-cli-aarch64-apple-darwin', '46b99211e1e8102b0df6ba1dcff9de9e1ac43a895ba77f023feed6ef4fbd5e6e', 'bindgen'), + ('bindgen-cli-x86_64-unknown-linux-gnu', '3ede28f4f5e66d3a62d9337e0f485650915ac2c2df75cca69debf04413ad28d0', 'bindgen'), + ] +] + +[ + http_archive( + name = f'{name}.tar.gz', + sha256 = sha256, + urls = [ f'https://github.com/cargo-bins/cargo-quickinstall/releases/download/bindgen-cli-{VERSION}/bindgen-cli-{VERSION}-x86_64-pc-windows-msvc.tar.gz' ], + type = 'tar.gz', + sub_targets = [ binary ], + visibility = [], + ) for name, sha256, binary in [ + ('bindgen-cli-x86_64-pc-windows-msvc', '3416fcd40adaa08e8fc3fbf2d40160fa4db03d6e70bd330df18c33456e2b418c', 'bindgen.exe'), + ] +] + +export_exe( + name = 'bindgen', + src = select({ + 'config//cpu:x86_64': select({ + 'config//os:linux': ':bindgen-cli-x86_64-unknown-linux-gnu.tar.xz[bindgen]', + 'config//os:windows': ':bindgen-cli-x86_64-pc-windows-msvc.tar.gz[bindgen.exe]', + }), + 'config//cpu:arm64': select({ + 'config//os:macos': ':bindgen-cli-aarch64-apple-darwin.tar.xz[bindgen]', + }), + }), + visibility = [], +) From 35635f3d251579de2a6233c32048c4f0b8bbcd32 Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Tue, 25 Jun 2024 20:16:31 -0500 Subject: [PATCH 07/21] buck: build libssh2 Signed-off-by: Austin Seipp --- buck/third-party/libssh2/BUILD | 122 ++++++++++++++++++ buck/third-party/libssh2/PACKAGE | 5 + .../libssh2/include/libssh2_config.h | 5 + 3 files changed, 132 insertions(+) create mode 100644 buck/third-party/libssh2/BUILD create mode 100644 buck/third-party/libssh2/PACKAGE create mode 100644 buck/third-party/libssh2/include/libssh2_config.h diff --git a/buck/third-party/libssh2/BUILD b/buck/third-party/libssh2/BUILD new file mode 100644 index 0000000000..5237c76204 --- /dev/null +++ b/buck/third-party/libssh2/BUILD @@ -0,0 +1,122 @@ + +load("@root//buck/shims/jj.bzl", "jj") + +VERSION = 'ef292424bb5d136f888a2d2e92460de12c143ab4' + +http_archive( + name = 'src', + sha256 = 'de10623f0ab08ca0ccedc95d50f5e827b5f4680935024e6c5ebd7b2ef2129e5f', + urls = [ + f'https://github.com/libssh2/libssh2/archive/{VERSION}.tar.gz', + ], + type = 'tar.gz', + strip_prefix = f'libssh2-{VERSION}', + sub_targets = [ + "include/libssh2.h", + "src/agent.c", + "src/bcrypt_pbkdf.c", + "src/blowfish.c", + "src/channel.c", + "src/comp.c", + "src/crypt.c", + "src/global.c", + "src/hostkey.c", + "src/keepalive.c", + "src/kex.c", + "src/knownhost.c", + "src/mac.c", + "src/misc.c", + "src/openssl.c", + "src/packet.c", + "src/pem.c", + "src/publickey.c", + "src/scp.c", + "src/session.c", + "src/sftp.c", + "src/transport.c", + "src/userauth.c", + "src/userauth_kbd_packet.c", + "src/agent_win.c", + ], +) + +jj.cxx_library( + name = 'libssh2', + srcs = [ + ":src[src/agent.c]", + ":src[src/bcrypt_pbkdf.c]", + ":src[src/blowfish.c]", + ":src[src/channel.c]", + ":src[src/comp.c]", + ":src[src/crypt.c]", + ":src[src/global.c]", + ":src[src/hostkey.c]", + ":src[src/keepalive.c]", + ":src[src/kex.c]", + ":src[src/knownhost.c]", + ":src[src/mac.c]", + ":src[src/misc.c]", + ":src[src/openssl.c]", + ":src[src/packet.c]", + ":src[src/pem.c]", + ":src[src/publickey.c]", + ":src[src/scp.c]", + ":src[src/session.c]", + ":src[src/sftp.c]", + ":src[src/transport.c]", + ":src[src/userauth.c]", + ":src[src/userauth_kbd_packet.c]", + ] + select({ + 'config//os:windows': [ + ':src[src/agent_win.c]', + ], + 'DEFAULT': [], + }), + headers = ["include/libssh2_config.h"], + header_namespace = "", + exported_headers = { + 'libssh2.h': ':src[include/libssh2.h]', + }, + include_directories = ["include"], + compiler_flags = select({ + 'config//os:windows': [], + 'DEFAULT': ["-fvisibility=hidden"], + }), + preferred_linkage = "static", + preprocessor_flags = [ + "-I$(location :src)/src", + "-I$(location :src)/include", + "-DLIBSSH2_OPENSSL", + "-DHAVE_EVP_AES_128_CTR", + "-DLIBSSH2_DH_GEX_NEW", + "-DLIBSSH2_HAVE_ZLIB", + ] + select({ + 'config//os:windows': [ + "-I$(location :src)/win32", + "-DLIBSSH2_WIN32", + "-DWIN32_LEAN_AND_MEAN", + "-DNOMINMAX", + ], + 'DEFAULT': [ + "-DHAVE_SNPRINTF", + "-DHAVE_UNISTD_H", + "-DHAVE_INTTYPES_H", + "-DHAVE_SYS_SELECT_H", + "-DHAVE_SYS_UIO", + "-DHAVE_SYS_SOCKET_H", + "-DHAVE_SYS_IOCTL_H", + "-DHAVE_SYS_TIME_H", + "-DHAVE_SYS_UN_H", + "-DHAVE_O_NONBLOCK", + "-DHAVE_LIBCRYPT32", + "-DHAVE_POLL", + "-DHAVE_GETTIMEOFDAY", + ], + }), + + deps = [ + "third-party//bssl:crypto", + "third-party//bssl:ssl", + "third-party//libz:libz", + ], +) diff --git a/buck/third-party/libssh2/PACKAGE b/buck/third-party/libssh2/PACKAGE new file mode 100644 index 0000000000..9bf0691b15 --- /dev/null +++ b/buck/third-party/libssh2/PACKAGE @@ -0,0 +1,5 @@ + +package( + inherit = True, + visibility = [ 'PUBLIC' ], +) diff --git a/buck/third-party/libssh2/include/libssh2_config.h b/buck/third-party/libssh2/include/libssh2_config.h new file mode 100644 index 0000000000..58f42511e4 --- /dev/null +++ b/buck/third-party/libssh2/include/libssh2_config.h @@ -0,0 +1,5 @@ +// NOTE (aseipp): this file is supposed to contain CMake-generated #define's in +// the upstream build system. we don't use CMake to build, and we pass those +// flags directly using -D, just like the libssh2-rs build.rs script does it. so +// this file only needs to exist so that the C source files can include it as a +// no-op From a901830103cead25246e81a98d355db4a004f449 Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Tue, 25 Jun 2024 20:29:11 -0500 Subject: [PATCH 08/21] buck: build libgit2 Signed-off-by: Austin Seipp --- buck/third-party/libgit2/BUILD | 523 ++++++++++++++++++ buck/third-party/libgit2/PACKAGE | 5 + .../libgit2/include/git2_features.h | 14 + 3 files changed, 542 insertions(+) create mode 100644 buck/third-party/libgit2/BUILD create mode 100644 buck/third-party/libgit2/PACKAGE create mode 100644 buck/third-party/libgit2/include/git2_features.h diff --git a/buck/third-party/libgit2/BUILD b/buck/third-party/libgit2/BUILD new file mode 100644 index 0000000000..ca9e160711 --- /dev/null +++ b/buck/third-party/libgit2/BUILD @@ -0,0 +1,523 @@ + +load("@root//buck/shims/jj.bzl", "jj") + +VERSION = '1.8.1' + +http_archive( + name = 'src', + sha256 = '8c1eaf0cf07cba0e9021920bfba9502140220786ed5d8a8ec6c7ad9174522f8e', + urls = [ + f'https://github.com/libgit2/libgit2/archive/refs/tags/v{VERSION}.tar.gz', + ], + type = 'tar.gz', + strip_prefix = f'libgit2-{VERSION}', + sub_targets = [ + "deps/llhttp/api.c", + "deps/llhttp/http.c", + "deps/llhttp/llhttp.c", + "deps/llhttp/llhttp.h", + "deps/pcre/pcre_byte_order.c", + "deps/pcre/pcre_chartables.c", + "deps/pcre/pcre_compile.c", + "deps/pcre/pcre_config.c", + "deps/pcre/pcre_dfa_exec.c", + "deps/pcre/pcre_exec.c", + "deps/pcre/pcre_fullinfo.c", + "deps/pcre/pcre_get.c", + "deps/pcre/pcre_globals.c", + "deps/pcre/pcre_jit_compile.c", + "deps/pcre/pcre_maketables.c", + "deps/pcre/pcre_newline.c", + "deps/pcre/pcre_ord2utf8.c", + "deps/pcre/pcre_printint.c", + "deps/pcre/pcre_refcount.c", + "deps/pcre/pcre_string_utils.c", + "deps/pcre/pcre_study.c", + "deps/pcre/pcre_tables.c", + "deps/pcre/pcre_ucd.c", + "deps/pcre/pcre_valid_utf8.c", + "deps/pcre/pcre_version.c", + "deps/pcre/pcre_xclass.c", + "deps/pcre/pcreposix.c", + "deps/xdiff/xdiffi.c", + "deps/xdiff/xemit.c", + "deps/xdiff/xhistogram.c", + "deps/xdiff/xmerge.c", + "deps/xdiff/xpatience.c", + "deps/xdiff/xprepare.c", + "deps/xdiff/xutils.c", + "src/libgit2/annotated_commit.c", + "src/libgit2/apply.c", + "src/libgit2/attr.c", + "src/libgit2/attr_file.c", + "src/libgit2/attrcache.c", + "src/libgit2/blame.c", + "src/libgit2/blame_git.c", + "src/libgit2/blob.c", + "src/libgit2/branch.c", + "src/libgit2/buf.c", + "src/libgit2/cache.c", + "src/libgit2/checkout.c", + "src/libgit2/cherrypick.c", + "src/libgit2/clone.c", + "src/libgit2/commit.c", + "src/libgit2/commit_graph.c", + "src/libgit2/commit_list.c", + "src/libgit2/config.c", + "src/libgit2/config_cache.c", + "src/libgit2/config_list.c", + "src/libgit2/config_file.c", + "src/libgit2/config_mem.c", + "src/libgit2/config_parse.c", + "src/libgit2/config_snapshot.c", + "src/libgit2/crlf.c", + "src/libgit2/delta.c", + "src/libgit2/describe.c", + "src/libgit2/diff.c", + "src/libgit2/diff_driver.c", + "src/libgit2/diff_file.c", + "src/libgit2/diff_generate.c", + "src/libgit2/diff_parse.c", + "src/libgit2/diff_print.c", + "src/libgit2/diff_stats.c", + "src/libgit2/diff_tform.c", + "src/libgit2/diff_xdiff.c", + "src/libgit2/email.c", + "src/libgit2/fetch.c", + "src/libgit2/fetchhead.c", + "src/libgit2/filter.c", + "src/libgit2/grafts.c", + "src/libgit2/graph.c", + "src/libgit2/hashsig.c", + "src/libgit2/ident.c", + "src/libgit2/idxmap.c", + "src/libgit2/ignore.c", + "src/libgit2/index.c", + "src/libgit2/indexer.c", + "src/libgit2/iterator.c", + "src/libgit2/libgit2.c", + "src/libgit2/mailmap.c", + "src/libgit2/merge.c", + "src/libgit2/merge_driver.c", + "src/libgit2/merge_file.c", + "src/libgit2/message.c", + "src/libgit2/midx.c", + "src/libgit2/mwindow.c", + "src/libgit2/notes.c", + "src/libgit2/object.c", + "src/libgit2/object_api.c", + "src/libgit2/odb.c", + "src/libgit2/odb_loose.c", + "src/libgit2/odb_mempack.c", + "src/libgit2/odb_pack.c", + "src/libgit2/offmap.c", + "src/libgit2/oid.c", + "src/libgit2/oidarray.c", + "src/libgit2/oidmap.c", + "src/libgit2/pack.c", + "src/libgit2/pack-objects.c", + "src/libgit2/parse.c", + "src/libgit2/patch.c", + "src/libgit2/patch_generate.c", + "src/libgit2/patch_parse.c", + "src/libgit2/path.c", + "src/libgit2/pathspec.c", + "src/libgit2/proxy.c", + "src/libgit2/push.c", + "src/libgit2/reader.c", + "src/libgit2/rebase.c", + "src/libgit2/refdb.c", + "src/libgit2/refdb_fs.c", + "src/libgit2/reflog.c", + "src/libgit2/refs.c", + "src/libgit2/refspec.c", + "src/libgit2/remote.c", + "src/libgit2/repository.c", + "src/libgit2/reset.c", + "src/libgit2/revert.c", + "src/libgit2/revparse.c", + "src/libgit2/revwalk.c", + "src/libgit2/settings.c", + "src/libgit2/signature.c", + "src/libgit2/stash.c", + "src/libgit2/status.c", + "src/libgit2/strarray.c", + "src/libgit2/streams/mbedtls.c", + "src/libgit2/streams/openssl.c", + "src/libgit2/streams/openssl_dynamic.c", + "src/libgit2/streams/openssl_legacy.c", + "src/libgit2/streams/registry.c", + "src/libgit2/streams/schannel.c", + "src/libgit2/streams/socket.c", + "src/libgit2/streams/stransport.c", + "src/libgit2/streams/tls.c", + "src/libgit2/submodule.c", + "src/libgit2/sysdir.c", + "src/libgit2/tag.c", + "src/libgit2/trace.c", + "src/libgit2/trailer.c", + "src/libgit2/transaction.c", + "src/libgit2/transport.c", + "src/libgit2/transports/auth.c", + "src/libgit2/transports/auth_gssapi.c", + "src/libgit2/transports/auth_ntlmclient.c", + "src/libgit2/transports/auth_sspi.c", + "src/libgit2/transports/credential.c", + "src/libgit2/transports/credential_helpers.c", + "src/libgit2/transports/git.c", + "src/libgit2/transports/http.c", + "src/libgit2/transports/httpclient.c", + "src/libgit2/transports/httpparser.c", + "src/libgit2/transports/local.c", + "src/libgit2/transports/smart.c", + "src/libgit2/transports/smart_pkt.c", + "src/libgit2/transports/smart_protocol.c", + "src/libgit2/transports/ssh.c", + "src/libgit2/transports/ssh_libssh2.c", + "src/libgit2/transports/winhttp.c", + "src/libgit2/tree.c", + "src/libgit2/tree-cache.c", + "src/libgit2/worktree.c", + "src/util/alloc.c", + "src/util/allocators/failalloc.c", + "src/util/allocators/stdalloc.c", + "src/util/date.c", + "src/util/errors.c", + "src/util/filebuf.c", + "src/util/fs_path.c", + "src/util/futils.c", + "src/util/hash.c", + "src/util/hash/collisiondetect.c", + "src/util/hash/openssl.c", + "src/util/hash/sha1dc/sha1.c", + "src/util/hash/sha1dc/ubc_check.c", + "src/util/net.c", + "src/util/pool.c", + "src/util/posix.c", + "src/util/pqueue.c", + "src/util/rand.c", + "src/util/regexp.c", + "src/util/runtime.c", + "src/util/sortedcache.c", + "src/util/str.c", + "src/util/strmap.c", + "src/util/thread.c", + "src/util/tsort.c", + "src/util/unix/map.c", + "src/util/unix/realpath.c", + "src/util/win32/dir.c", + "src/util/win32/dir.h", + "src/util/win32/error.c", + "src/util/win32/error.h", + "src/util/win32/map.c", + "src/util/win32/mingw-compat.h", + "src/util/win32/msvc-compat.h", + "src/util/win32/path_w32.c", + "src/util/win32/path_w32.h", + "src/util/win32/posix.h", + "src/util/win32/posix_w32.c", + "src/util/win32/precompiled.c", + "src/util/win32/precompiled.h", + "src/util/win32/reparse.h", + "src/util/win32/thread.c", + "src/util/win32/thread.h", + "src/util/win32/utf-conv.c", + "src/util/win32/utf-conv.h", + "src/util/win32/version.h", + "src/util/win32/w32_buffer.c", + "src/util/win32/w32_buffer.h", + "src/util/win32/w32_common.h", + "src/util/win32/w32_leakcheck.c", + "src/util/win32/w32_leakcheck.h", + "src/util/win32/w32_util.c", + "src/util/win32/w32_util.h", + "src/util/win32/win32-compat.h", + "src/util/utf8.c", + "src/util/util.c", + "src/util/varint.c", + "src/util/vector.c", + "src/util/wildmatch.c", + "src/util/zstream.c", + ], +) + +jj.cxx_library( + name = "libgit2", + srcs = [ + ":src[deps/llhttp/api.c]", + ":src[deps/llhttp/http.c]", + ":src[deps/llhttp/llhttp.c]", + ":src[deps/pcre/pcre_byte_order.c]", + ":src[deps/pcre/pcre_chartables.c]", + ":src[deps/pcre/pcre_compile.c]", + ":src[deps/pcre/pcre_config.c]", + ":src[deps/pcre/pcre_dfa_exec.c]", + ":src[deps/pcre/pcre_exec.c]", + ":src[deps/pcre/pcre_fullinfo.c]", + ":src[deps/pcre/pcre_get.c]", + ":src[deps/pcre/pcre_globals.c]", + ":src[deps/pcre/pcre_jit_compile.c]", + ":src[deps/pcre/pcre_maketables.c]", + ":src[deps/pcre/pcre_newline.c]", + ":src[deps/pcre/pcre_ord2utf8.c]", + ":src[deps/pcre/pcre_printint.c]", + ":src[deps/pcre/pcre_refcount.c]", + ":src[deps/pcre/pcre_string_utils.c]", + ":src[deps/pcre/pcre_study.c]", + ":src[deps/pcre/pcre_tables.c]", + ":src[deps/pcre/pcre_ucd.c]", + ":src[deps/pcre/pcre_valid_utf8.c]", + ":src[deps/pcre/pcre_version.c]", + ":src[deps/pcre/pcre_xclass.c]", + ":src[deps/pcre/pcreposix.c]", + ":src[deps/xdiff/xdiffi.c]", + ":src[deps/xdiff/xemit.c]", + ":src[deps/xdiff/xhistogram.c]", + ":src[deps/xdiff/xmerge.c]", + ":src[deps/xdiff/xpatience.c]", + ":src[deps/xdiff/xprepare.c]", + ":src[deps/xdiff/xutils.c]", + ":src[src/libgit2/annotated_commit.c]", + ":src[src/libgit2/apply.c]", + ":src[src/libgit2/attr.c]", + ":src[src/libgit2/attr_file.c]", + ":src[src/libgit2/attrcache.c]", + ":src[src/libgit2/blame.c]", + ":src[src/libgit2/blame_git.c]", + ":src[src/libgit2/blob.c]", + ":src[src/libgit2/branch.c]", + ":src[src/libgit2/buf.c]", + ":src[src/libgit2/cache.c]", + ":src[src/libgit2/checkout.c]", + ":src[src/libgit2/cherrypick.c]", + ":src[src/libgit2/clone.c]", + ":src[src/libgit2/commit.c]", + ":src[src/libgit2/commit_graph.c]", + ":src[src/libgit2/commit_list.c]", + ":src[src/libgit2/config.c]", + ":src[src/libgit2/config_cache.c]", + ":src[src/libgit2/config_list.c]", + ":src[src/libgit2/config_file.c]", + ":src[src/libgit2/config_mem.c]", + ":src[src/libgit2/config_parse.c]", + ":src[src/libgit2/config_snapshot.c]", + ":src[src/libgit2/crlf.c]", + ":src[src/libgit2/delta.c]", + ":src[src/libgit2/describe.c]", + ":src[src/libgit2/diff.c]", + ":src[src/libgit2/diff_driver.c]", + ":src[src/libgit2/diff_file.c]", + ":src[src/libgit2/diff_generate.c]", + ":src[src/libgit2/diff_parse.c]", + ":src[src/libgit2/diff_print.c]", + ":src[src/libgit2/diff_stats.c]", + ":src[src/libgit2/diff_tform.c]", + ":src[src/libgit2/diff_xdiff.c]", + ":src[src/libgit2/email.c]", + ":src[src/libgit2/fetch.c]", + ":src[src/libgit2/fetchhead.c]", + ":src[src/libgit2/filter.c]", + ":src[src/libgit2/grafts.c]", + ":src[src/libgit2/graph.c]", + ":src[src/libgit2/hashsig.c]", + ":src[src/libgit2/ident.c]", + ":src[src/libgit2/idxmap.c]", + ":src[src/libgit2/ignore.c]", + ":src[src/libgit2/index.c]", + ":src[src/libgit2/indexer.c]", + ":src[src/libgit2/iterator.c]", + ":src[src/libgit2/libgit2.c]", + ":src[src/libgit2/mailmap.c]", + ":src[src/libgit2/merge.c]", + ":src[src/libgit2/merge_driver.c]", + ":src[src/libgit2/merge_file.c]", + ":src[src/libgit2/message.c]", + ":src[src/libgit2/midx.c]", + ":src[src/libgit2/mwindow.c]", + ":src[src/libgit2/notes.c]", + ":src[src/libgit2/object.c]", + ":src[src/libgit2/object_api.c]", + ":src[src/libgit2/odb.c]", + ":src[src/libgit2/odb_loose.c]", + ":src[src/libgit2/odb_mempack.c]", + ":src[src/libgit2/odb_pack.c]", + ":src[src/libgit2/offmap.c]", + ":src[src/libgit2/oid.c]", + ":src[src/libgit2/oidarray.c]", + ":src[src/libgit2/oidmap.c]", + ":src[src/libgit2/pack.c]", + ":src[src/libgit2/pack-objects.c]", + ":src[src/libgit2/parse.c]", + ":src[src/libgit2/patch.c]", + ":src[src/libgit2/patch_generate.c]", + ":src[src/libgit2/patch_parse.c]", + ":src[src/libgit2/path.c]", + ":src[src/libgit2/pathspec.c]", + ":src[src/libgit2/proxy.c]", + ":src[src/libgit2/push.c]", + ":src[src/libgit2/reader.c]", + ":src[src/libgit2/rebase.c]", + ":src[src/libgit2/refdb.c]", + ":src[src/libgit2/refdb_fs.c]", + ":src[src/libgit2/reflog.c]", + ":src[src/libgit2/refs.c]", + ":src[src/libgit2/refspec.c]", + ":src[src/libgit2/remote.c]", + ":src[src/libgit2/repository.c]", + ":src[src/libgit2/reset.c]", + ":src[src/libgit2/revert.c]", + ":src[src/libgit2/revparse.c]", + ":src[src/libgit2/revwalk.c]", + ":src[src/libgit2/settings.c]", + ":src[src/libgit2/signature.c]", + ":src[src/libgit2/stash.c]", + ":src[src/libgit2/status.c]", + ":src[src/libgit2/strarray.c]", + ":src[src/libgit2/streams/mbedtls.c]", + ":src[src/libgit2/streams/openssl.c]", + ":src[src/libgit2/streams/openssl_dynamic.c]", + ":src[src/libgit2/streams/openssl_legacy.c]", + ":src[src/libgit2/streams/registry.c]", + ":src[src/libgit2/streams/schannel.c]", + ":src[src/libgit2/streams/socket.c]", + ":src[src/libgit2/streams/stransport.c]", + ":src[src/libgit2/streams/tls.c]", + ":src[src/libgit2/submodule.c]", + ":src[src/libgit2/sysdir.c]", + ":src[src/libgit2/tag.c]", + ":src[src/libgit2/trace.c]", + ":src[src/libgit2/trailer.c]", + ":src[src/libgit2/transaction.c]", + ":src[src/libgit2/transport.c]", + ":src[src/libgit2/transports/auth.c]", + ":src[src/libgit2/transports/auth_gssapi.c]", + ":src[src/libgit2/transports/auth_ntlmclient.c]", + ":src[src/libgit2/transports/auth_sspi.c]", + ":src[src/libgit2/transports/credential.c]", + ":src[src/libgit2/transports/credential_helpers.c]", + ":src[src/libgit2/transports/git.c]", + ":src[src/libgit2/transports/http.c]", + ":src[src/libgit2/transports/httpclient.c]", + ":src[src/libgit2/transports/httpparser.c]", + ":src[src/libgit2/transports/local.c]", + ":src[src/libgit2/transports/smart.c]", + ":src[src/libgit2/transports/smart_pkt.c]", + ":src[src/libgit2/transports/smart_protocol.c]", + ":src[src/libgit2/transports/ssh.c]", + ":src[src/libgit2/transports/ssh_libssh2.c]", + ":src[src/libgit2/transports/winhttp.c]", + ":src[src/libgit2/tree.c]", + ":src[src/libgit2/tree-cache.c]", + ":src[src/libgit2/worktree.c]", + ":src[src/util/alloc.c]", + ":src[src/util/allocators/failalloc.c]", + ":src[src/util/allocators/stdalloc.c]", + ":src[src/util/date.c]", + ":src[src/util/errors.c]", + ":src[src/util/filebuf.c]", + ":src[src/util/fs_path.c]", + ":src[src/util/futils.c]", + ":src[src/util/hash.c]", + ":src[src/util/hash/collisiondetect.c]", + ":src[src/util/hash/openssl.c]", + ":src[src/util/hash/sha1dc/sha1.c]", + ":src[src/util/hash/sha1dc/ubc_check.c]", + ":src[src/util/net.c]", + ":src[src/util/pool.c]", + ":src[src/util/posix.c]", + ":src[src/util/pqueue.c]", + ":src[src/util/rand.c]", + ":src[src/util/regexp.c]", + ":src[src/util/runtime.c]", + ":src[src/util/sortedcache.c]", + ":src[src/util/str.c]", + ":src[src/util/strmap.c]", + ":src[src/util/thread.c]", + ":src[src/util/tsort.c]", + ":src[src/util/utf8.c]", + ":src[src/util/util.c]", + ":src[src/util/varint.c]", + ":src[src/util/vector.c]", + ":src[src/util/wildmatch.c]", + ":src[src/util/zstream.c]", + ] + select({ + 'config//os:windows': [ + ":src[src/util/win32/dir.c]", + ":src[src/util/win32/error.c]", + ":src[src/util/win32/map.c]", + ":src[src/util/win32/path_w32.c]", + ":src[src/util/win32/posix_w32.c]", + ":src[src/util/win32/precompiled.c]", + ":src[src/util/win32/thread.c]", + ":src[src/util/win32/utf-conv.c]", + ":src[src/util/win32/w32_buffer.c]", + ":src[src/util/win32/w32_leakcheck.c]", + ":src[src/util/win32/w32_util.c]", + ], + 'DEFAULT': [ + ":src[src/util/unix/map.c]", + ":src[src/util/unix/realpath.c]", + ], + }), + headers = ["include/git2_features.h"], + include_directories = ["include"], + compiler_flags = select({ + 'config//os:windows': [], + 'DEFAULT': ["-fvisibility=hidden"], + }), + preferred_linkage = "static", + preprocessor_flags = [ + "-I$(location :src)/include", + "-I$(location :src)/src/libgit2", + "-I$(location :src)/src/util", + "-I$(location :src)/deps/llhttp", + "-I$(location :src)/deps/xdiff", + "-I$(location :src)/deps/pcre", + "-DGIT_OPENSSL=1", + "-DGIT_SHA256_OPENSSL=1", + "-DGIT_SHA1_COLLISIONDETECT=1", + "-DGIT_HTTPS=1", + "-DGIT_REGEX_BUILTIN=1", + "-DHAVE_STDINT_H=1", + "-DHAVE_MEMMOVE=1", + "-DNO_RECURSE=1", + "-DNEWLINE=10", + "-DPOSIX_MALLOC_THRESHOLD=10", + "-DLINK_SIZE=2", + "-DPARENS_NEST_LIMIT=250", + "-DMATCH_LIMIT=10000000", + "-DMATCH_LIMIT_RECURSION=MATCH_LIMIT", + "-DMAX_NAME_SIZE=32", + "-DMAX_NAME_COUNT=10000", + "-DSHA1DC_NO_STANDARD_INCLUDES=1", + "-DSHA1DC_CUSTOM_INCLUDE_SHA1_C=\"common.h\"", + "-DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C=\"common.h\"", + ] + select({ + 'config//os:windows': [ + "-DSTRSAFE_NO_DEPRECATE", + "-DWIN32", + "-DWIN32_LEAN_AND_MEAN", + "-DNOMINMAX", + "-DGIT_IO_WSAPOLL=1", + "-DGIT_WINHTTP=1", + "-DGIT_USE_STAT_MTIM=1", + ], + 'config//os:macos': [ + "-DGIT_IO_POLL=1", + "-DGIT_IO_SELECT=1", + "-DGIT_SECURE_TRANSPORT=1", + "-DGIT_USE_STAT_MTIMESPEC=1", + ], + 'DEFAULT': [ + "-DGIT_IO_POLL=1", + "-DGIT_IO_SELECT=1", + "-DGIT_USE_STAT_MTIM=1", + ], + }), + deps = [ + "third-party//bssl:crypto", + "third-party//bssl:ssl", + "third-party//libz:libz", + "third-party//libssh2:libssh2", + ], +) diff --git a/buck/third-party/libgit2/PACKAGE b/buck/third-party/libgit2/PACKAGE new file mode 100644 index 0000000000..9bf0691b15 --- /dev/null +++ b/buck/third-party/libgit2/PACKAGE @@ -0,0 +1,5 @@ + +package( + inherit = True, + visibility = [ 'PUBLIC' ], +) diff --git a/buck/third-party/libgit2/include/git2_features.h b/buck/third-party/libgit2/include/git2_features.h new file mode 100644 index 0000000000..9f705ccad5 --- /dev/null +++ b/buck/third-party/libgit2/include/git2_features.h @@ -0,0 +1,14 @@ +#ifndef INCLUDE_features_h +#define INCLUDE_features_h + +#define GIT_THREADS 1 +#define GIT_TRACE 1 +#define GIT_HTTPPARSER_BUILTIN 1 + +#define GIT_ARCH_64 1 // XXX FIXME (aseipp) + +#define GIT_SSH 1 +#define GIT_SSH_LIBSSH2 1 +#define GIT_SSH_MEMORY_CREDENTIALS 1 + +#endif // INCLUDE_features_h From 447b0b84735accde6860a1914a0b4561c2d9f5a0 Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Sun, 6 Aug 2023 17:40:36 -0500 Subject: [PATCH 09/21] buck: add initial reindeer scaffold Summary: `buck2 build third-party//rust` works fine here. Signed-off-by: Austin Seipp --- buck/third-party/rust/BUILD | 200 ++++++++++++++++++ buck/third-party/rust/Cargo.lock | 77 +++++++ buck/third-party/rust/Cargo.toml | 15 ++ .../rust/fixups/generic-array/fixups.toml | 1 + .../rust/fixups/typenum/fixups.toml | 4 + buck/third-party/rust/reindeer.toml | 35 +++ buck/third-party/rust/top.rs | 3 + 7 files changed, 335 insertions(+) create mode 100644 buck/third-party/rust/BUILD create mode 100644 buck/third-party/rust/Cargo.lock create mode 100644 buck/third-party/rust/Cargo.toml create mode 100644 buck/third-party/rust/fixups/generic-array/fixups.toml create mode 100644 buck/third-party/rust/fixups/typenum/fixups.toml create mode 100644 buck/third-party/rust/reindeer.toml create mode 100644 buck/third-party/rust/top.rs diff --git a/buck/third-party/rust/BUILD b/buck/third-party/rust/BUILD new file mode 100644 index 0000000000..d40c24a796 --- /dev/null +++ b/buck/third-party/rust/BUILD @@ -0,0 +1,200 @@ +# @generated by `reindeer buckify` + +load("@root//buck/shims/third_party_rust.bzl", "third_party_rust") + +# XXX (aseipp): this is a hack to provide a convenient top-level alias. +# this allows us to just build `third-party//rust` without a target name +# to build everything we need. +# this should probably be part of reindeer itself? + +alias( + name = 'rust', + actual = ':rust-third-party-0.0.0-top', + visibility = ["PUBLIC"], +) + +# XXX: normal reindeer-generated code below + +alias( + name = "blake2", + actual = ":blake2-0.10.6", + visibility = ["PUBLIC"], +) + +http_archive( + name = "blake2-0.10.6.crate", + sha256 = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe", + strip_prefix = "blake2-0.10.6", + urls = ["https://static.crates.io/crates/blake2/0.10.6/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "blake2-0.10.6", + srcs = [":blake2-0.10.6.crate"], + crate = "blake2", + crate_root = "blake2-0.10.6.crate/src/lib.rs", + edition = "2018", + features = [ + "default", + "std", + ], + visibility = [], + deps = [":digest-0.10.7"], +) + +http_archive( + name = "block-buffer-0.10.4.crate", + sha256 = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71", + strip_prefix = "block-buffer-0.10.4", + urls = ["https://static.crates.io/crates/block-buffer/0.10.4/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "block-buffer-0.10.4", + srcs = [":block-buffer-0.10.4.crate"], + crate = "block_buffer", + crate_root = "block-buffer-0.10.4.crate/src/lib.rs", + edition = "2018", + visibility = [], + deps = [":generic-array-0.14.7"], +) + +http_archive( + name = "crypto-common-0.1.6.crate", + sha256 = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3", + strip_prefix = "crypto-common-0.1.6", + urls = ["https://static.crates.io/crates/crypto-common/0.1.6/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "crypto-common-0.1.6", + srcs = [":crypto-common-0.1.6.crate"], + crate = "crypto_common", + crate_root = "crypto-common-0.1.6.crate/src/lib.rs", + edition = "2018", + features = ["std"], + visibility = [], + deps = [ + ":generic-array-0.14.7", + ":typenum-1.17.0", + ], +) + +http_archive( + name = "digest-0.10.7.crate", + sha256 = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292", + strip_prefix = "digest-0.10.7", + urls = ["https://static.crates.io/crates/digest/0.10.7/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "digest-0.10.7", + srcs = [":digest-0.10.7.crate"], + crate = "digest", + crate_root = "digest-0.10.7.crate/src/lib.rs", + edition = "2018", + features = [ + "alloc", + "block-buffer", + "core-api", + "default", + "mac", + "std", + "subtle", + ], + visibility = [], + deps = [ + ":block-buffer-0.10.4", + ":crypto-common-0.1.6", + ":subtle-2.5.0", + ], +) + +http_archive( + name = "generic-array-0.14.7.crate", + sha256 = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a", + strip_prefix = "generic-array-0.14.7", + urls = ["https://static.crates.io/crates/generic-array/0.14.7/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "generic-array-0.14.7", + srcs = [":generic-array-0.14.7.crate"], + crate = "generic_array", + crate_root = "generic-array-0.14.7.crate/src/lib.rs", + edition = "2015", + features = ["more_lengths"], + visibility = [], + deps = [":typenum-1.17.0"], +) + +third_party_rust.rust_binary( + name = "rust-third-party-0.0.0-top", + srcs = ["top.rs"], + crate = "top", + crate_root = "top.rs", + edition = "2021", + visibility = [], + deps = [":blake2-0.10.6"], +) + +http_archive( + name = "subtle-2.5.0.crate", + sha256 = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc", + strip_prefix = "subtle-2.5.0", + urls = ["https://static.crates.io/crates/subtle/2.5.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "subtle-2.5.0", + srcs = [":subtle-2.5.0.crate"], + crate = "subtle", + crate_root = "subtle-2.5.0.crate/src/lib.rs", + edition = "2018", + visibility = [], +) + +http_archive( + name = "typenum-1.17.0.crate", + sha256 = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825", + strip_prefix = "typenum-1.17.0", + urls = ["https://static.crates.io/crates/typenum/1.17.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "typenum-1.17.0", + srcs = [":typenum-1.17.0.crate"], + crate = "typenum", + crate_root = "typenum-1.17.0.crate/src/lib.rs", + edition = "2018", + env = { + "OUT_DIR": "$(location :typenum-1.17.0-build-script-main-run[out_dir])", + }, + features = ["force_unix_path_separator"], + visibility = [], +) + +third_party_rust.rust_binary( + name = "typenum-1.17.0-build-script-main", + srcs = [":typenum-1.17.0.crate"], + crate = "build_script_main", + crate_root = "typenum-1.17.0.crate/build/main.rs", + edition = "2018", + features = ["force_unix_path_separator"], + visibility = [], +) + +third_party_rust.buildscript_run( + name = "typenum-1.17.0-build-script-main-run", + package_name = "typenum", + buildscript_rule = ":typenum-1.17.0-build-script-main", + features = ["force_unix_path_separator"], + version = "1.17.0", +) diff --git a/buck/third-party/rust/Cargo.lock b/buck/third-party/rust/Cargo.lock new file mode 100644 index 0000000000..88251bd9a7 --- /dev/null +++ b/buck/third-party/rust/Cargo.lock @@ -0,0 +1,77 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "rust-third-party" +version = "0.0.0" +dependencies = [ + "blake2", +] + +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" diff --git a/buck/third-party/rust/Cargo.toml b/buck/third-party/rust/Cargo.toml new file mode 100644 index 0000000000..0d73a0d2c7 --- /dev/null +++ b/buck/third-party/rust/Cargo.toml @@ -0,0 +1,15 @@ +[workspace] + +[package] +name = "rust-third-party" +version = "0.0.0" +publish = false +edition = "2021" + +# Dummy target to keep Cargo happy +[[bin]] +name = "top" +path = "top.rs" + +[dependencies] +blake2 = "0.10.6" diff --git a/buck/third-party/rust/fixups/generic-array/fixups.toml b/buck/third-party/rust/fixups/generic-array/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/generic-array/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/typenum/fixups.toml b/buck/third-party/rust/fixups/typenum/fixups.toml new file mode 100644 index 0000000000..7ab02e4fd1 --- /dev/null +++ b/buck/third-party/rust/fixups/typenum/fixups.toml @@ -0,0 +1,4 @@ +features = ["force_unix_path_separator"] + +[[buildscript]] +[buildscript.gen_srcs] diff --git a/buck/third-party/rust/reindeer.toml b/buck/third-party/rust/reindeer.toml new file mode 100644 index 0000000000..ef51006659 --- /dev/null +++ b/buck/third-party/rust/reindeer.toml @@ -0,0 +1,35 @@ +vendor = false +precise_srcs = true +include_top_level = true +fixup_templates = true + +[buck] +file_name = "BUILD" + +alias = "alias" +filegroup = "filegroup" +http_archive = "http_archive" +git_fetch = "git_fetch" + +rust_library = "third_party_rust.rust_library" +rust_binary = "third_party_rust.rust_binary" +cxx_library = "third_party_rust.cxx_library" +prebuilt_cxx_library = "third_party_rust.prebuilt_cxx_library" +buildscript_genrule = "third_party_rust.buildscript_run" + +buckfile_imports = """ +load("@root//buck/shims/third_party_rust.bzl", "third_party_rust") + +# XXX (aseipp): this is a hack to provide a convenient top-level alias. +# this allows us to just build `third-party//rust` without a target name +# to build everything we need. +# this should probably be part of reindeer itself? + +alias( + name = 'rust', + actual = ':rust-third-party-0.0.0-top', + visibility = ["PUBLIC"], +) + +# XXX: normal reindeer-generated code below +""" diff --git a/buck/third-party/rust/top.rs b/buck/third-party/rust/top.rs new file mode 100644 index 0000000000..211a33685e --- /dev/null +++ b/buck/third-party/rust/top.rs @@ -0,0 +1,3 @@ +// Dummy source to keep Cargo happy + +fn main() {} From 58c573ad78fa47477371983a7632ac1fa3847ab8 Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Sun, 6 Aug 2023 17:40:36 -0500 Subject: [PATCH 10/21] buck: add many reindeer fixups Summary: These will be needed for a lot of upcoming dependencies as the Reindeer dependencies and Cargo dependencies are unified. Signed-off-by: Austin Seipp --- buck/third-party/rust/fixups/ahash/fixups.toml | 1 + buck/third-party/rust/fixups/anyhow/fixups.toml | 1 + buck/third-party/rust/fixups/assert_cmd/fixups.toml | 4 ++++ buck/third-party/rust/fixups/async-trait/fixups.toml | 1 + buck/third-party/rust/fixups/camino/fixups.toml | 2 ++ buck/third-party/rust/fixups/crc32fast/fixups.toml | 1 + buck/third-party/rust/fixups/criterion/fixups.toml | 1 + .../rust/fixups/crossbeam-epoch/fixups.toml | 2 ++ .../rust/fixups/crossbeam-utils/fixups.toml | 2 ++ buck/third-party/rust/fixups/doc-comment/fixups.toml | 1 + .../rust/fixups/futures-channel/fixups.toml | 2 ++ buck/third-party/rust/fixups/futures-core/fixups.toml | 2 ++ buck/third-party/rust/fixups/futures-task/fixups.toml | 2 ++ buck/third-party/rust/fixups/futures-util/fixups.toml | 2 ++ buck/third-party/rust/fixups/git2/fixups.toml | 1 + buck/third-party/rust/fixups/gix/fixups.toml | 1 + buck/third-party/rust/fixups/indexmap/fixups.toml | 2 ++ buck/third-party/rust/fixups/io-lifetimes/fixups.toml | 1 + buck/third-party/rust/fixups/libc/fixups.toml | 2 ++ buck/third-party/rust/fixups/libgit2-sys/fixups.toml | 2 ++ buck/third-party/rust/fixups/libssh2-sys/fixups.toml | 2 ++ buck/third-party/rust/fixups/libz-sys/fixups.toml | 3 +++ buck/third-party/rust/fixups/lock_api/fixups.toml | 3 +++ buck/third-party/rust/fixups/memchr/fixups.toml | 1 + buck/third-party/rust/fixups/memoffset/fixups.toml | 1 + buck/third-party/rust/fixups/mio/fixups.toml | 1 + buck/third-party/rust/fixups/num-traits/fixups.toml | 2 ++ buck/third-party/rust/fixups/openssl-sys/fixups.toml | 10 ++++++++++ .../rust/fixups/parking_lot_core/fixups.toml | 2 ++ buck/third-party/rust/fixups/paste/fixups.toml | 1 + buck/third-party/rust/fixups/prettyplease/fixups.toml | 2 ++ .../rust/fixups/proc-macro-error-attr/fixups.toml | 1 + .../rust/fixups/proc-macro-error/fixups.toml | 2 ++ .../rust/fixups/proc-macro-hack/fixups.toml | 1 + .../rust/fixups/proc-macro2-diagnostics/fixups.toml | 1 + buck/third-party/rust/fixups/proc-macro2/fixups.toml | 2 ++ buck/third-party/rust/fixups/quote/fixups.toml | 1 + buck/third-party/rust/fixups/rayon-core/fixups.toml | 1 + buck/third-party/rust/fixups/ref-cast/fixups.toml | 1 + buck/third-party/rust/fixups/rustix/fixups.toml | 2 ++ buck/third-party/rust/fixups/rustversion/fixups.toml | 4 ++++ buck/third-party/rust/fixups/semver/fixups.toml | 2 ++ buck/third-party/rust/fixups/serde/fixups.toml | 1 + buck/third-party/rust/fixups/serde_derive/fixups.toml | 2 ++ buck/third-party/rust/fixups/serde_json/fixups.toml | 2 ++ buck/third-party/rust/fixups/signal-hook/fixups.toml | 1 + buck/third-party/rust/fixups/slab/fixups.toml | 1 + buck/third-party/rust/fixups/syn/fixups.toml | 1 + buck/third-party/rust/fixups/tempfile/fixups.toml | 2 ++ buck/third-party/rust/fixups/thiserror/fixups.toml | 1 + buck/third-party/rust/fixups/tokio/fixups.toml | 1 + .../rust/fixups/unicode-linebreak/fixups.toml | 3 +++ .../fixups/winapi-x86_64-pc-windows-gnu/fixups.toml | 1 + buck/third-party/rust/fixups/winapi/fixups.toml | 4 ++++ .../rust/fixups/windows-targets/fixups.toml | 3 +++ .../rust/fixups/windows_x86_64_gnu/fixups.toml | 1 + .../rust/fixups/windows_x86_64_msvc/fixups.toml | 1 + buck/third-party/rust/fixups/winreg/fixups.toml | 1 + buck/third-party/rust/fixups/zerocopy/fixups.toml | 1 + buck/third-party/rust/fixups/zstd-safe/fixups.toml | 1 + buck/third-party/rust/fixups/zstd-sys/fixups.toml | 2 ++ 61 files changed, 109 insertions(+) create mode 100644 buck/third-party/rust/fixups/ahash/fixups.toml create mode 100644 buck/third-party/rust/fixups/anyhow/fixups.toml create mode 100644 buck/third-party/rust/fixups/assert_cmd/fixups.toml create mode 100644 buck/third-party/rust/fixups/async-trait/fixups.toml create mode 100644 buck/third-party/rust/fixups/camino/fixups.toml create mode 100644 buck/third-party/rust/fixups/crc32fast/fixups.toml create mode 100644 buck/third-party/rust/fixups/criterion/fixups.toml create mode 100644 buck/third-party/rust/fixups/crossbeam-epoch/fixups.toml create mode 100644 buck/third-party/rust/fixups/crossbeam-utils/fixups.toml create mode 100644 buck/third-party/rust/fixups/doc-comment/fixups.toml create mode 100644 buck/third-party/rust/fixups/futures-channel/fixups.toml create mode 100644 buck/third-party/rust/fixups/futures-core/fixups.toml create mode 100644 buck/third-party/rust/fixups/futures-task/fixups.toml create mode 100644 buck/third-party/rust/fixups/futures-util/fixups.toml create mode 100644 buck/third-party/rust/fixups/git2/fixups.toml create mode 100644 buck/third-party/rust/fixups/gix/fixups.toml create mode 100644 buck/third-party/rust/fixups/indexmap/fixups.toml create mode 100644 buck/third-party/rust/fixups/io-lifetimes/fixups.toml create mode 100644 buck/third-party/rust/fixups/libc/fixups.toml create mode 100644 buck/third-party/rust/fixups/libgit2-sys/fixups.toml create mode 100644 buck/third-party/rust/fixups/libssh2-sys/fixups.toml create mode 100644 buck/third-party/rust/fixups/libz-sys/fixups.toml create mode 100644 buck/third-party/rust/fixups/lock_api/fixups.toml create mode 100644 buck/third-party/rust/fixups/memchr/fixups.toml create mode 100644 buck/third-party/rust/fixups/memoffset/fixups.toml create mode 100644 buck/third-party/rust/fixups/mio/fixups.toml create mode 100644 buck/third-party/rust/fixups/num-traits/fixups.toml create mode 100644 buck/third-party/rust/fixups/openssl-sys/fixups.toml create mode 100644 buck/third-party/rust/fixups/parking_lot_core/fixups.toml create mode 100644 buck/third-party/rust/fixups/paste/fixups.toml create mode 100644 buck/third-party/rust/fixups/prettyplease/fixups.toml create mode 100644 buck/third-party/rust/fixups/proc-macro-error-attr/fixups.toml create mode 100644 buck/third-party/rust/fixups/proc-macro-error/fixups.toml create mode 100644 buck/third-party/rust/fixups/proc-macro-hack/fixups.toml create mode 100644 buck/third-party/rust/fixups/proc-macro2-diagnostics/fixups.toml create mode 100644 buck/third-party/rust/fixups/proc-macro2/fixups.toml create mode 100644 buck/third-party/rust/fixups/quote/fixups.toml create mode 100644 buck/third-party/rust/fixups/rayon-core/fixups.toml create mode 100644 buck/third-party/rust/fixups/ref-cast/fixups.toml create mode 100644 buck/third-party/rust/fixups/rustix/fixups.toml create mode 100644 buck/third-party/rust/fixups/rustversion/fixups.toml create mode 100644 buck/third-party/rust/fixups/semver/fixups.toml create mode 100644 buck/third-party/rust/fixups/serde/fixups.toml create mode 100644 buck/third-party/rust/fixups/serde_derive/fixups.toml create mode 100644 buck/third-party/rust/fixups/serde_json/fixups.toml create mode 100644 buck/third-party/rust/fixups/signal-hook/fixups.toml create mode 100644 buck/third-party/rust/fixups/slab/fixups.toml create mode 100644 buck/third-party/rust/fixups/syn/fixups.toml create mode 100644 buck/third-party/rust/fixups/tempfile/fixups.toml create mode 100644 buck/third-party/rust/fixups/thiserror/fixups.toml create mode 100644 buck/third-party/rust/fixups/tokio/fixups.toml create mode 100644 buck/third-party/rust/fixups/unicode-linebreak/fixups.toml create mode 100644 buck/third-party/rust/fixups/winapi-x86_64-pc-windows-gnu/fixups.toml create mode 100644 buck/third-party/rust/fixups/winapi/fixups.toml create mode 100644 buck/third-party/rust/fixups/windows-targets/fixups.toml create mode 100644 buck/third-party/rust/fixups/windows_x86_64_gnu/fixups.toml create mode 100644 buck/third-party/rust/fixups/windows_x86_64_msvc/fixups.toml create mode 100644 buck/third-party/rust/fixups/winreg/fixups.toml create mode 100644 buck/third-party/rust/fixups/zerocopy/fixups.toml create mode 100644 buck/third-party/rust/fixups/zstd-safe/fixups.toml create mode 100644 buck/third-party/rust/fixups/zstd-sys/fixups.toml diff --git a/buck/third-party/rust/fixups/ahash/fixups.toml b/buck/third-party/rust/fixups/ahash/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/ahash/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/anyhow/fixups.toml b/buck/third-party/rust/fixups/anyhow/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/anyhow/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/assert_cmd/fixups.toml b/buck/third-party/rust/fixups/assert_cmd/fixups.toml new file mode 100644 index 0000000000..c00965957b --- /dev/null +++ b/buck/third-party/rust/fixups/assert_cmd/fixups.toml @@ -0,0 +1,4 @@ +cargo_env = true + +[[buildscript]] +[buildscript.gen_srcs] diff --git a/buck/third-party/rust/fixups/async-trait/fixups.toml b/buck/third-party/rust/fixups/async-trait/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/async-trait/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/camino/fixups.toml b/buck/third-party/rust/fixups/camino/fixups.toml new file mode 100644 index 0000000000..5e026f75e0 --- /dev/null +++ b/buck/third-party/rust/fixups/camino/fixups.toml @@ -0,0 +1,2 @@ +[[buildscript]] +[buildscript.rustc_flags] diff --git a/buck/third-party/rust/fixups/crc32fast/fixups.toml b/buck/third-party/rust/fixups/crc32fast/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/crc32fast/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/criterion/fixups.toml b/buck/third-party/rust/fixups/criterion/fixups.toml new file mode 100644 index 0000000000..41439d3356 --- /dev/null +++ b/buck/third-party/rust/fixups/criterion/fixups.toml @@ -0,0 +1 @@ +cargo_env = true diff --git a/buck/third-party/rust/fixups/crossbeam-epoch/fixups.toml b/buck/third-party/rust/fixups/crossbeam-epoch/fixups.toml new file mode 100644 index 0000000000..3510928422 --- /dev/null +++ b/buck/third-party/rust/fixups/crossbeam-epoch/fixups.toml @@ -0,0 +1,2 @@ +buildscript = [] +cargo_env = true diff --git a/buck/third-party/rust/fixups/crossbeam-utils/fixups.toml b/buck/third-party/rust/fixups/crossbeam-utils/fixups.toml new file mode 100644 index 0000000000..3510928422 --- /dev/null +++ b/buck/third-party/rust/fixups/crossbeam-utils/fixups.toml @@ -0,0 +1,2 @@ +buildscript = [] +cargo_env = true diff --git a/buck/third-party/rust/fixups/doc-comment/fixups.toml b/buck/third-party/rust/fixups/doc-comment/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/doc-comment/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/futures-channel/fixups.toml b/buck/third-party/rust/fixups/futures-channel/fixups.toml new file mode 100644 index 0000000000..3510928422 --- /dev/null +++ b/buck/third-party/rust/fixups/futures-channel/fixups.toml @@ -0,0 +1,2 @@ +buildscript = [] +cargo_env = true diff --git a/buck/third-party/rust/fixups/futures-core/fixups.toml b/buck/third-party/rust/fixups/futures-core/fixups.toml new file mode 100644 index 0000000000..3510928422 --- /dev/null +++ b/buck/third-party/rust/fixups/futures-core/fixups.toml @@ -0,0 +1,2 @@ +buildscript = [] +cargo_env = true diff --git a/buck/third-party/rust/fixups/futures-task/fixups.toml b/buck/third-party/rust/fixups/futures-task/fixups.toml new file mode 100644 index 0000000000..3510928422 --- /dev/null +++ b/buck/third-party/rust/fixups/futures-task/fixups.toml @@ -0,0 +1,2 @@ +buildscript = [] +cargo_env = true diff --git a/buck/third-party/rust/fixups/futures-util/fixups.toml b/buck/third-party/rust/fixups/futures-util/fixups.toml new file mode 100644 index 0000000000..3510928422 --- /dev/null +++ b/buck/third-party/rust/fixups/futures-util/fixups.toml @@ -0,0 +1,2 @@ +buildscript = [] +cargo_env = true diff --git a/buck/third-party/rust/fixups/git2/fixups.toml b/buck/third-party/rust/fixups/git2/fixups.toml new file mode 100644 index 0000000000..41439d3356 --- /dev/null +++ b/buck/third-party/rust/fixups/git2/fixups.toml @@ -0,0 +1 @@ +cargo_env = true diff --git a/buck/third-party/rust/fixups/gix/fixups.toml b/buck/third-party/rust/fixups/gix/fixups.toml new file mode 100644 index 0000000000..41439d3356 --- /dev/null +++ b/buck/third-party/rust/fixups/gix/fixups.toml @@ -0,0 +1 @@ +cargo_env = true diff --git a/buck/third-party/rust/fixups/indexmap/fixups.toml b/buck/third-party/rust/fixups/indexmap/fixups.toml new file mode 100644 index 0000000000..4aa45eda12 --- /dev/null +++ b/buck/third-party/rust/fixups/indexmap/fixups.toml @@ -0,0 +1,2 @@ +buildscript = [] +cfgs = ["has_std"] diff --git a/buck/third-party/rust/fixups/io-lifetimes/fixups.toml b/buck/third-party/rust/fixups/io-lifetimes/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/io-lifetimes/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/libc/fixups.toml b/buck/third-party/rust/fixups/libc/fixups.toml new file mode 100644 index 0000000000..5e026f75e0 --- /dev/null +++ b/buck/third-party/rust/fixups/libc/fixups.toml @@ -0,0 +1,2 @@ +[[buildscript]] +[buildscript.rustc_flags] diff --git a/buck/third-party/rust/fixups/libgit2-sys/fixups.toml b/buck/third-party/rust/fixups/libgit2-sys/fixups.toml new file mode 100644 index 0000000000..3475b8335e --- /dev/null +++ b/buck/third-party/rust/fixups/libgit2-sys/fixups.toml @@ -0,0 +1,2 @@ +extra_deps = ["third-party//libgit2:libgit2"] +buildscript = [] diff --git a/buck/third-party/rust/fixups/libssh2-sys/fixups.toml b/buck/third-party/rust/fixups/libssh2-sys/fixups.toml new file mode 100644 index 0000000000..dcd554c012 --- /dev/null +++ b/buck/third-party/rust/fixups/libssh2-sys/fixups.toml @@ -0,0 +1,2 @@ +extra_deps = ["third-party//libssh2:libssh2"] +buildscript = [] diff --git a/buck/third-party/rust/fixups/libz-sys/fixups.toml b/buck/third-party/rust/fixups/libz-sys/fixups.toml new file mode 100644 index 0000000000..191fe0a1b3 --- /dev/null +++ b/buck/third-party/rust/fixups/libz-sys/fixups.toml @@ -0,0 +1,3 @@ +features = ["stock-zlib"] +extra_deps = ["third-party//libz:libz"] +buildscript = [] diff --git a/buck/third-party/rust/fixups/lock_api/fixups.toml b/buck/third-party/rust/fixups/lock_api/fixups.toml new file mode 100644 index 0000000000..6c1a3d45a5 --- /dev/null +++ b/buck/third-party/rust/fixups/lock_api/fixups.toml @@ -0,0 +1,3 @@ +# the build script for lock_api is a version check for rust 1.61. +[[buildscript]] +[buildscript.rustc_flags] diff --git a/buck/third-party/rust/fixups/memchr/fixups.toml b/buck/third-party/rust/fixups/memchr/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/memchr/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/memoffset/fixups.toml b/buck/third-party/rust/fixups/memoffset/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/memoffset/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/mio/fixups.toml b/buck/third-party/rust/fixups/mio/fixups.toml new file mode 100644 index 0000000000..af7edb27e3 --- /dev/null +++ b/buck/third-party/rust/fixups/mio/fixups.toml @@ -0,0 +1 @@ +extra_srcs = ["src/**/*.rs"] diff --git a/buck/third-party/rust/fixups/num-traits/fixups.toml b/buck/third-party/rust/fixups/num-traits/fixups.toml new file mode 100644 index 0000000000..5e026f75e0 --- /dev/null +++ b/buck/third-party/rust/fixups/num-traits/fixups.toml @@ -0,0 +1,2 @@ +[[buildscript]] +[buildscript.rustc_flags] diff --git a/buck/third-party/rust/fixups/openssl-sys/fixups.toml b/buck/third-party/rust/fixups/openssl-sys/fixups.toml new file mode 100644 index 0000000000..dbb4525e28 --- /dev/null +++ b/buck/third-party/rust/fixups/openssl-sys/fixups.toml @@ -0,0 +1,10 @@ +cfgs = ["boringssl"] +features = ["unstable_boringssl"] +extra_deps = [ + "third-party//bssl:crypto", + "third-party//bssl:ssl", + "third-party//bssl/rust:bssl-sys", +] +omit_deps = ["bssl-sys"] + +buildscript = [] diff --git a/buck/third-party/rust/fixups/parking_lot_core/fixups.toml b/buck/third-party/rust/fixups/parking_lot_core/fixups.toml new file mode 100644 index 0000000000..5e026f75e0 --- /dev/null +++ b/buck/third-party/rust/fixups/parking_lot_core/fixups.toml @@ -0,0 +1,2 @@ +[[buildscript]] +[buildscript.rustc_flags] diff --git a/buck/third-party/rust/fixups/paste/fixups.toml b/buck/third-party/rust/fixups/paste/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/paste/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/prettyplease/fixups.toml b/buck/third-party/rust/fixups/prettyplease/fixups.toml new file mode 100644 index 0000000000..3510928422 --- /dev/null +++ b/buck/third-party/rust/fixups/prettyplease/fixups.toml @@ -0,0 +1,2 @@ +buildscript = [] +cargo_env = true diff --git a/buck/third-party/rust/fixups/proc-macro-error-attr/fixups.toml b/buck/third-party/rust/fixups/proc-macro-error-attr/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/proc-macro-error-attr/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/proc-macro-error/fixups.toml b/buck/third-party/rust/fixups/proc-macro-error/fixups.toml new file mode 100644 index 0000000000..5e026f75e0 --- /dev/null +++ b/buck/third-party/rust/fixups/proc-macro-error/fixups.toml @@ -0,0 +1,2 @@ +[[buildscript]] +[buildscript.rustc_flags] diff --git a/buck/third-party/rust/fixups/proc-macro-hack/fixups.toml b/buck/third-party/rust/fixups/proc-macro-hack/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/proc-macro-hack/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/proc-macro2-diagnostics/fixups.toml b/buck/third-party/rust/fixups/proc-macro2-diagnostics/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/proc-macro2-diagnostics/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/proc-macro2/fixups.toml b/buck/third-party/rust/fixups/proc-macro2/fixups.toml new file mode 100644 index 0000000000..5e026f75e0 --- /dev/null +++ b/buck/third-party/rust/fixups/proc-macro2/fixups.toml @@ -0,0 +1,2 @@ +[[buildscript]] +[buildscript.rustc_flags] diff --git a/buck/third-party/rust/fixups/quote/fixups.toml b/buck/third-party/rust/fixups/quote/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/quote/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/rayon-core/fixups.toml b/buck/third-party/rust/fixups/rayon-core/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/rayon-core/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/ref-cast/fixups.toml b/buck/third-party/rust/fixups/ref-cast/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/ref-cast/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/rustix/fixups.toml b/buck/third-party/rust/fixups/rustix/fixups.toml new file mode 100644 index 0000000000..5e026f75e0 --- /dev/null +++ b/buck/third-party/rust/fixups/rustix/fixups.toml @@ -0,0 +1,2 @@ +[[buildscript]] +[buildscript.rustc_flags] diff --git a/buck/third-party/rust/fixups/rustversion/fixups.toml b/buck/third-party/rust/fixups/rustversion/fixups.toml new file mode 100644 index 0000000000..c00965957b --- /dev/null +++ b/buck/third-party/rust/fixups/rustversion/fixups.toml @@ -0,0 +1,4 @@ +cargo_env = true + +[[buildscript]] +[buildscript.gen_srcs] diff --git a/buck/third-party/rust/fixups/semver/fixups.toml b/buck/third-party/rust/fixups/semver/fixups.toml new file mode 100644 index 0000000000..5e026f75e0 --- /dev/null +++ b/buck/third-party/rust/fixups/semver/fixups.toml @@ -0,0 +1,2 @@ +[[buildscript]] +[buildscript.rustc_flags] diff --git a/buck/third-party/rust/fixups/serde/fixups.toml b/buck/third-party/rust/fixups/serde/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/serde/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/serde_derive/fixups.toml b/buck/third-party/rust/fixups/serde_derive/fixups.toml new file mode 100644 index 0000000000..4975cb922d --- /dev/null +++ b/buck/third-party/rust/fixups/serde_derive/fixups.toml @@ -0,0 +1,2 @@ +cargo_env = true +buildscript = [] diff --git a/buck/third-party/rust/fixups/serde_json/fixups.toml b/buck/third-party/rust/fixups/serde_json/fixups.toml new file mode 100644 index 0000000000..5e026f75e0 --- /dev/null +++ b/buck/third-party/rust/fixups/serde_json/fixups.toml @@ -0,0 +1,2 @@ +[[buildscript]] +[buildscript.rustc_flags] diff --git a/buck/third-party/rust/fixups/signal-hook/fixups.toml b/buck/third-party/rust/fixups/signal-hook/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/signal-hook/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/slab/fixups.toml b/buck/third-party/rust/fixups/slab/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/slab/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/syn/fixups.toml b/buck/third-party/rust/fixups/syn/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/syn/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/tempfile/fixups.toml b/buck/third-party/rust/fixups/tempfile/fixups.toml new file mode 100644 index 0000000000..5e026f75e0 --- /dev/null +++ b/buck/third-party/rust/fixups/tempfile/fixups.toml @@ -0,0 +1,2 @@ +[[buildscript]] +[buildscript.rustc_flags] diff --git a/buck/third-party/rust/fixups/thiserror/fixups.toml b/buck/third-party/rust/fixups/thiserror/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/thiserror/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/tokio/fixups.toml b/buck/third-party/rust/fixups/tokio/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/tokio/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/unicode-linebreak/fixups.toml b/buck/third-party/rust/fixups/unicode-linebreak/fixups.toml new file mode 100644 index 0000000000..06144c7851 --- /dev/null +++ b/buck/third-party/rust/fixups/unicode-linebreak/fixups.toml @@ -0,0 +1,3 @@ + +[[buildscript]] +[buildscript.gen_srcs] diff --git a/buck/third-party/rust/fixups/winapi-x86_64-pc-windows-gnu/fixups.toml b/buck/third-party/rust/fixups/winapi-x86_64-pc-windows-gnu/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/winapi-x86_64-pc-windows-gnu/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/winapi/fixups.toml b/buck/third-party/rust/fixups/winapi/fixups.toml new file mode 100644 index 0000000000..ec4f86e500 --- /dev/null +++ b/buck/third-party/rust/fixups/winapi/fixups.toml @@ -0,0 +1,4 @@ +buildscript = [] + +[[platform_fixup.'cfg(target_os = "windows")'.buildscript]] +[platform_fixup.'cfg(target_os = "windows")'.buildscript.rustc_flags] diff --git a/buck/third-party/rust/fixups/windows-targets/fixups.toml b/buck/third-party/rust/fixups/windows-targets/fixups.toml new file mode 100644 index 0000000000..b3555c7795 --- /dev/null +++ b/buck/third-party/rust/fixups/windows-targets/fixups.toml @@ -0,0 +1,3 @@ +[platform_fixup.'cfg(any(target_os = "windows", target_os = "linux"))'] +version = ">=0.48.0" +cfgs = ["windows_raw_dylib"] diff --git a/buck/third-party/rust/fixups/windows_x86_64_gnu/fixups.toml b/buck/third-party/rust/fixups/windows_x86_64_gnu/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/windows_x86_64_gnu/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/windows_x86_64_msvc/fixups.toml b/buck/third-party/rust/fixups/windows_x86_64_msvc/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/windows_x86_64_msvc/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/winreg/fixups.toml b/buck/third-party/rust/fixups/winreg/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/winreg/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/zerocopy/fixups.toml b/buck/third-party/rust/fixups/zerocopy/fixups.toml new file mode 100644 index 0000000000..41439d3356 --- /dev/null +++ b/buck/third-party/rust/fixups/zerocopy/fixups.toml @@ -0,0 +1 @@ +cargo_env = true diff --git a/buck/third-party/rust/fixups/zstd-safe/fixups.toml b/buck/third-party/rust/fixups/zstd-safe/fixups.toml new file mode 100644 index 0000000000..db40d72cb2 --- /dev/null +++ b/buck/third-party/rust/fixups/zstd-safe/fixups.toml @@ -0,0 +1 @@ +buildscript = [] diff --git a/buck/third-party/rust/fixups/zstd-sys/fixups.toml b/buck/third-party/rust/fixups/zstd-sys/fixups.toml new file mode 100644 index 0000000000..0c322b8495 --- /dev/null +++ b/buck/third-party/rust/fixups/zstd-sys/fixups.toml @@ -0,0 +1,2 @@ +extra_deps = ["third-party//zstd:zstd"] +buildscript = [] From fbf73de942dbe832fc78be3d04be956d38e01d3d Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Sun, 6 Aug 2023 17:46:57 -0500 Subject: [PATCH 11/21] buck: unify cargo deps with reindeer deps This includes a very simple script to do the synchronization between the workspace Cargo file and the Buck2-specific Cargo file, automatically. Signed-off-by: Austin Seipp --- .github/workflows/codespell.yml | 2 +- buck/third-party/rust/BUILD | 9432 +++++++++++++++++++++++++- buck/third-party/rust/Cargo.lock | 3746 +++++++++- buck/third-party/rust/Cargo.toml | 82 + buck/third-party/rust/reindeer.toml | 6 + buck/third-party/rust/synchronize.py | 99 + 6 files changed, 13241 insertions(+), 126 deletions(-) create mode 100755 buck/third-party/rust/synchronize.py diff --git a/.github/workflows/codespell.yml b/.github/workflows/codespell.yml index 75c3791d97..2c2f07d286 100644 --- a/.github/workflows/codespell.yml +++ b/.github/workflows/codespell.yml @@ -18,5 +18,5 @@ jobs: with: check_filenames: true check_hidden: true - skip: ./target,./.jj,*.lock + skip: ./target,./.jj,*.lock,./buck/third-party/rust/BUILD ignore_words_list: crate,NotIn,Wirth diff --git a/buck/third-party/rust/BUILD b/buck/third-party/rust/BUILD index d40c24a796..00e53aa88f 100644 --- a/buck/third-party/rust/BUILD +++ b/buck/third-party/rust/BUILD @@ -13,188 +13,9426 @@ alias( visibility = ["PUBLIC"], ) +python_bootstrap_binary( + name = 'sync.py', + main = 'synchronize.py', + visibility = [ 'PUBLIC' ], +) + # XXX: normal reindeer-generated code below -alias( - name = "blake2", - actual = ":blake2-0.10.6", - visibility = ["PUBLIC"], +http_archive( + name = "adler2-2.0.0.crate", + sha256 = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627", + strip_prefix = "adler2-2.0.0", + urls = ["https://static.crates.io/crates/adler2/2.0.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "adler2-2.0.0", + srcs = [":adler2-2.0.0.crate"], + crate = "adler2", + crate_root = "adler2-2.0.0.crate/src/lib.rs", + edition = "2021", + visibility = [], ) http_archive( - name = "blake2-0.10.6.crate", - sha256 = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe", - strip_prefix = "blake2-0.10.6", - urls = ["https://static.crates.io/crates/blake2/0.10.6/download"], + name = "ahash-0.8.11.crate", + sha256 = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011", + strip_prefix = "ahash-0.8.11", + urls = ["https://static.crates.io/crates/ahash/0.8.11/download"], visibility = [], ) third_party_rust.rust_library( - name = "blake2-0.10.6", - srcs = [":blake2-0.10.6.crate"], - crate = "blake2", - crate_root = "blake2-0.10.6.crate/src/lib.rs", + name = "ahash-0.8.11", + srcs = [":ahash-0.8.11.crate"], + crate = "ahash", + crate_root = "ahash-0.8.11.crate/src/lib.rs", edition = "2018", features = [ "default", + "getrandom", + "runtime-rng", "std", ], + platform = { + "linux-arm64": dict( + deps = [":once_cell-1.20.2"], + ), + "linux-x86_64": dict( + deps = [":once_cell-1.20.2"], + ), + "macos-arm64": dict( + deps = [":once_cell-1.20.2"], + ), + "macos-x86_64": dict( + deps = [":once_cell-1.20.2"], + ), + "windows-gnu": dict( + deps = [":once_cell-1.20.2"], + ), + "windows-msvc": dict( + deps = [":once_cell-1.20.2"], + ), + }, visibility = [], - deps = [":digest-0.10.7"], + deps = [ + ":cfg-if-1.0.0", + ":getrandom-0.2.15", + ":zerocopy-0.7.35", + ], ) http_archive( - name = "block-buffer-0.10.4.crate", - sha256 = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71", - strip_prefix = "block-buffer-0.10.4", - urls = ["https://static.crates.io/crates/block-buffer/0.10.4/download"], + name = "aho-corasick-1.1.3.crate", + sha256 = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916", + strip_prefix = "aho-corasick-1.1.3", + urls = ["https://static.crates.io/crates/aho-corasick/1.1.3/download"], visibility = [], ) third_party_rust.rust_library( - name = "block-buffer-0.10.4", - srcs = [":block-buffer-0.10.4.crate"], - crate = "block_buffer", - crate_root = "block-buffer-0.10.4.crate/src/lib.rs", + name = "aho-corasick-1.1.3", + srcs = [":aho-corasick-1.1.3.crate"], + crate = "aho_corasick", + crate_root = "aho-corasick-1.1.3.crate/src/lib.rs", + edition = "2021", + features = [ + "default", + "perf-literal", + "std", + ], + visibility = [], + deps = [":memchr-2.7.4"], +) + +http_archive( + name = "allocator-api2-0.2.18.crate", + sha256 = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f", + strip_prefix = "allocator-api2-0.2.18", + urls = ["https://static.crates.io/crates/allocator-api2/0.2.18/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "allocator-api2-0.2.18", + srcs = [":allocator-api2-0.2.18.crate"], + crate = "allocator_api2", + crate_root = "allocator-api2-0.2.18.crate/src/lib.rs", edition = "2018", + features = ["alloc"], visibility = [], - deps = [":generic-array-0.14.7"], ) http_archive( - name = "crypto-common-0.1.6.crate", - sha256 = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3", - strip_prefix = "crypto-common-0.1.6", - urls = ["https://static.crates.io/crates/crypto-common/0.1.6/download"], + name = "anes-0.1.6.crate", + sha256 = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299", + strip_prefix = "anes-0.1.6", + urls = ["https://static.crates.io/crates/anes/0.1.6/download"], visibility = [], ) third_party_rust.rust_library( - name = "crypto-common-0.1.6", - srcs = [":crypto-common-0.1.6.crate"], - crate = "crypto_common", - crate_root = "crypto-common-0.1.6.crate/src/lib.rs", + name = "anes-0.1.6", + srcs = [":anes-0.1.6.crate"], + crate = "anes", + crate_root = "anes-0.1.6.crate/src/lib.rs", edition = "2018", - features = ["std"], + features = ["default"], + visibility = [], +) + +http_archive( + name = "anstream-0.6.15.crate", + sha256 = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526", + strip_prefix = "anstream-0.6.15", + urls = ["https://static.crates.io/crates/anstream/0.6.15/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "anstream-0.6.15", + srcs = [":anstream-0.6.15.crate"], + crate = "anstream", + crate_root = "anstream-0.6.15.crate/src/lib.rs", + edition = "2021", + features = [ + "auto", + "default", + "wincon", + ], + platform = { + "windows-gnu": dict( + deps = [":anstyle-wincon-3.0.4"], + ), + "windows-msvc": dict( + deps = [":anstyle-wincon-3.0.4"], + ), + }, visibility = [], deps = [ - ":generic-array-0.14.7", - ":typenum-1.17.0", + ":anstyle-1.0.8", + ":anstyle-parse-0.2.5", + ":anstyle-query-1.1.1", + ":colorchoice-1.0.2", + ":is_terminal_polyfill-1.70.1", + ":utf8parse-0.2.2", ], ) http_archive( - name = "digest-0.10.7.crate", - sha256 = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292", - strip_prefix = "digest-0.10.7", - urls = ["https://static.crates.io/crates/digest/0.10.7/download"], + name = "anstyle-1.0.8.crate", + sha256 = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1", + strip_prefix = "anstyle-1.0.8", + urls = ["https://static.crates.io/crates/anstyle/1.0.8/download"], visibility = [], ) third_party_rust.rust_library( - name = "digest-0.10.7", - srcs = [":digest-0.10.7.crate"], - crate = "digest", - crate_root = "digest-0.10.7.crate/src/lib.rs", - edition = "2018", + name = "anstyle-1.0.8", + srcs = [":anstyle-1.0.8.crate"], + crate = "anstyle", + crate_root = "anstyle-1.0.8.crate/src/lib.rs", + edition = "2021", features = [ - "alloc", - "block-buffer", - "core-api", "default", - "mac", "std", - "subtle", ], visibility = [], - deps = [ - ":block-buffer-0.10.4", - ":crypto-common-0.1.6", - ":subtle-2.5.0", +) + +http_archive( + name = "anstyle-parse-0.2.5.crate", + sha256 = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb", + strip_prefix = "anstyle-parse-0.2.5", + urls = ["https://static.crates.io/crates/anstyle-parse/0.2.5/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "anstyle-parse-0.2.5", + srcs = [":anstyle-parse-0.2.5.crate"], + crate = "anstyle_parse", + crate_root = "anstyle-parse-0.2.5.crate/src/lib.rs", + edition = "2021", + features = [ + "default", + "utf8", ], + visibility = [], + deps = [":utf8parse-0.2.2"], ) http_archive( - name = "generic-array-0.14.7.crate", - sha256 = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a", - strip_prefix = "generic-array-0.14.7", - urls = ["https://static.crates.io/crates/generic-array/0.14.7/download"], + name = "anstyle-query-1.1.1.crate", + sha256 = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a", + strip_prefix = "anstyle-query-1.1.1", + urls = ["https://static.crates.io/crates/anstyle-query/1.1.1/download"], visibility = [], ) third_party_rust.rust_library( - name = "generic-array-0.14.7", - srcs = [":generic-array-0.14.7.crate"], - crate = "generic_array", - crate_root = "generic-array-0.14.7.crate/src/lib.rs", - edition = "2015", - features = ["more_lengths"], + name = "anstyle-query-1.1.1", + srcs = [":anstyle-query-1.1.1.crate"], + crate = "anstyle_query", + crate_root = "anstyle-query-1.1.1.crate/src/lib.rs", + edition = "2021", + platform = { + "windows-gnu": dict( + deps = [":windows-sys-0.52.0"], + ), + "windows-msvc": dict( + deps = [":windows-sys-0.52.0"], + ), + }, visibility = [], - deps = [":typenum-1.17.0"], ) -third_party_rust.rust_binary( - name = "rust-third-party-0.0.0-top", - srcs = ["top.rs"], - crate = "top", - crate_root = "top.rs", +http_archive( + name = "anstyle-wincon-3.0.4.crate", + sha256 = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8", + strip_prefix = "anstyle-wincon-3.0.4", + urls = ["https://static.crates.io/crates/anstyle-wincon/3.0.4/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "anstyle-wincon-3.0.4", + srcs = [":anstyle-wincon-3.0.4.crate"], + crate = "anstyle_wincon", + crate_root = "anstyle-wincon-3.0.4.crate/src/lib.rs", edition = "2021", + platform = { + "windows-gnu": dict( + deps = [":windows-sys-0.52.0"], + ), + "windows-msvc": dict( + deps = [":windows-sys-0.52.0"], + ), + }, + visibility = [], + deps = [":anstyle-1.0.8"], +) + +alias( + name = "anyhow", + actual = ":anyhow-1.0.89", + visibility = ["PUBLIC"], +) + +http_archive( + name = "anyhow-1.0.89.crate", + sha256 = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6", + strip_prefix = "anyhow-1.0.89", + urls = ["https://static.crates.io/crates/anyhow/1.0.89/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "anyhow-1.0.89", + srcs = [":anyhow-1.0.89.crate"], + crate = "anyhow", + crate_root = "anyhow-1.0.89.crate/src/lib.rs", + edition = "2018", + features = [ + "default", + "std", + ], visibility = [], - deps = [":blake2-0.10.6"], ) http_archive( - name = "subtle-2.5.0.crate", - sha256 = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc", - strip_prefix = "subtle-2.5.0", - urls = ["https://static.crates.io/crates/subtle/2.5.0/download"], + name = "arc-swap-1.7.1.crate", + sha256 = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457", + strip_prefix = "arc-swap-1.7.1", + urls = ["https://static.crates.io/crates/arc-swap/1.7.1/download"], visibility = [], ) third_party_rust.rust_library( - name = "subtle-2.5.0", - srcs = [":subtle-2.5.0.crate"], - crate = "subtle", - crate_root = "subtle-2.5.0.crate/src/lib.rs", + name = "arc-swap-1.7.1", + srcs = [":arc-swap-1.7.1.crate"], + crate = "arc_swap", + crate_root = "arc-swap-1.7.1.crate/src/lib.rs", edition = "2018", visibility = [], ) http_archive( - name = "typenum-1.17.0.crate", - sha256 = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825", - strip_prefix = "typenum-1.17.0", - urls = ["https://static.crates.io/crates/typenum/1.17.0/download"], + name = "arrayvec-0.7.6.crate", + sha256 = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50", + strip_prefix = "arrayvec-0.7.6", + urls = ["https://static.crates.io/crates/arrayvec/0.7.6/download"], visibility = [], ) third_party_rust.rust_library( - name = "typenum-1.17.0", - srcs = [":typenum-1.17.0.crate"], - crate = "typenum", - crate_root = "typenum-1.17.0.crate/src/lib.rs", + name = "arrayvec-0.7.6", + srcs = [":arrayvec-0.7.6.crate"], + crate = "arrayvec", + crate_root = "arrayvec-0.7.6.crate/src/lib.rs", edition = "2018", + visibility = [], +) + +alias( + name = "assert_cmd", + actual = ":assert_cmd-2.0.16", + visibility = ["PUBLIC"], +) + +http_archive( + name = "assert_cmd-2.0.16.crate", + sha256 = "dc1835b7f27878de8525dc71410b5a31cdcc5f230aed5ba5df968e09c201b23d", + strip_prefix = "assert_cmd-2.0.16", + urls = ["https://static.crates.io/crates/assert_cmd/2.0.16/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "assert_cmd-2.0.16", + srcs = [":assert_cmd-2.0.16.crate"], + crate = "assert_cmd", + crate_root = "assert_cmd-2.0.16.crate/src/lib.rs", + edition = "2021", env = { - "OUT_DIR": "$(location :typenum-1.17.0-build-script-main-run[out_dir])", + "CARGO_MANIFEST_DIR": "assert_cmd-2.0.16.crate", + "CARGO_PKG_AUTHORS": "Pascal Hertleif :Ed Page ", + "CARGO_PKG_DESCRIPTION": "Test CLI Applications.", + "CARGO_PKG_NAME": "assert_cmd", + "CARGO_PKG_REPOSITORY": "https://github.com/assert-rs/assert_cmd.git", + "CARGO_PKG_VERSION": "2.0.16", + "CARGO_PKG_VERSION_MAJOR": "2", + "CARGO_PKG_VERSION_MINOR": "0", + "CARGO_PKG_VERSION_PATCH": "16", + "OUT_DIR": "$(location :assert_cmd-2.0.16-build-script-run[out_dir])", }, - features = ["force_unix_path_separator"], visibility = [], + deps = [ + ":anstyle-1.0.8", + ":bstr-1.10.0", + ":doc-comment-0.3.3", + ":predicates-3.1.2", + ":predicates-core-1.0.8", + ":predicates-tree-1.0.11", + ":wait-timeout-0.2.0", + ], ) third_party_rust.rust_binary( - name = "typenum-1.17.0-build-script-main", - srcs = [":typenum-1.17.0.crate"], - crate = "build_script_main", - crate_root = "typenum-1.17.0.crate/build/main.rs", - edition = "2018", - features = ["force_unix_path_separator"], + name = "assert_cmd-2.0.16-build-script-build", + srcs = [":assert_cmd-2.0.16.crate"], + crate = "build_script_build", + crate_root = "assert_cmd-2.0.16.crate/build.rs", + edition = "2021", + env = { + "CARGO_MANIFEST_DIR": "assert_cmd-2.0.16.crate", + "CARGO_PKG_AUTHORS": "Pascal Hertleif :Ed Page ", + "CARGO_PKG_DESCRIPTION": "Test CLI Applications.", + "CARGO_PKG_NAME": "assert_cmd", + "CARGO_PKG_REPOSITORY": "https://github.com/assert-rs/assert_cmd.git", + "CARGO_PKG_VERSION": "2.0.16", + "CARGO_PKG_VERSION_MAJOR": "2", + "CARGO_PKG_VERSION_MINOR": "0", + "CARGO_PKG_VERSION_PATCH": "16", + }, visibility = [], ) third_party_rust.buildscript_run( - name = "typenum-1.17.0-build-script-main-run", - package_name = "typenum", - buildscript_rule = ":typenum-1.17.0-build-script-main", - features = ["force_unix_path_separator"], - version = "1.17.0", + name = "assert_cmd-2.0.16-build-script-run", + package_name = "assert_cmd", + buildscript_rule = ":assert_cmd-2.0.16-build-script-build", + version = "2.0.16", +) + +alias( + name = "assert_matches", + actual = ":assert_matches-1.5.0", + visibility = ["PUBLIC"], +) + +http_archive( + name = "assert_matches-1.5.0.crate", + sha256 = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9", + strip_prefix = "assert_matches-1.5.0", + urls = ["https://static.crates.io/crates/assert_matches/1.5.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "assert_matches-1.5.0", + srcs = [":assert_matches-1.5.0.crate"], + crate = "assert_matches", + crate_root = "assert_matches-1.5.0.crate/src/lib.rs", + edition = "2015", + visibility = [], +) + +alias( + name = "async-trait", + actual = ":async-trait-0.1.83", + visibility = ["PUBLIC"], +) + +http_archive( + name = "async-trait-0.1.83.crate", + sha256 = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd", + strip_prefix = "async-trait-0.1.83", + urls = ["https://static.crates.io/crates/async-trait/0.1.83/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "async-trait-0.1.83", + srcs = [":async-trait-0.1.83.crate"], + crate = "async_trait", + crate_root = "async-trait-0.1.83.crate/src/lib.rs", + edition = "2021", + proc_macro = True, + visibility = [], + deps = [ + ":proc-macro2-1.0.87", + ":quote-1.0.37", + ":syn-2.0.79", + ], +) + +http_archive( + name = "autocfg-1.3.0.crate", + sha256 = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0", + strip_prefix = "autocfg-1.3.0", + urls = ["https://static.crates.io/crates/autocfg/1.3.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "autocfg-1.3.0", + srcs = [":autocfg-1.3.0.crate"], + crate = "autocfg", + crate_root = "autocfg-1.3.0.crate/src/lib.rs", + edition = "2015", + visibility = [], +) + +alias( + name = "backoff", + actual = ":backoff-0.4.0", + visibility = ["PUBLIC"], +) + +http_archive( + name = "backoff-0.4.0.crate", + sha256 = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1", + strip_prefix = "backoff-0.4.0", + urls = ["https://static.crates.io/crates/backoff/0.4.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "backoff-0.4.0", + srcs = [":backoff-0.4.0.crate"], + crate = "backoff", + crate_root = "backoff-0.4.0.crate/src/lib.rs", + edition = "2018", + features = ["default"], + visibility = [], + deps = [ + ":getrandom-0.2.15", + ":instant-0.1.13", + ":rand-0.8.5", + ], +) + +http_archive( + name = "bitflags-1.3.2.crate", + sha256 = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a", + strip_prefix = "bitflags-1.3.2", + urls = ["https://static.crates.io/crates/bitflags/1.3.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "bitflags-1.3.2", + srcs = [":bitflags-1.3.2.crate"], + crate = "bitflags", + crate_root = "bitflags-1.3.2.crate/src/lib.rs", + edition = "2018", + features = ["default"], + visibility = [], +) + +http_archive( + name = "bitflags-2.6.0.crate", + sha256 = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de", + strip_prefix = "bitflags-2.6.0", + urls = ["https://static.crates.io/crates/bitflags/2.6.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "bitflags-2.6.0", + srcs = [":bitflags-2.6.0.crate"], + crate = "bitflags", + crate_root = "bitflags-2.6.0.crate/src/lib.rs", + edition = "2021", + features = ["std"], + visibility = [], +) + +alias( + name = "blake2", + actual = ":blake2-0.10.6", + visibility = ["PUBLIC"], +) + +http_archive( + name = "blake2-0.10.6.crate", + sha256 = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe", + strip_prefix = "blake2-0.10.6", + urls = ["https://static.crates.io/crates/blake2/0.10.6/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "blake2-0.10.6", + srcs = [":blake2-0.10.6.crate"], + crate = "blake2", + crate_root = "blake2-0.10.6.crate/src/lib.rs", + edition = "2018", + features = [ + "default", + "std", + ], + visibility = [], + deps = [":digest-0.10.7"], +) + +http_archive( + name = "block-buffer-0.10.4.crate", + sha256 = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71", + strip_prefix = "block-buffer-0.10.4", + urls = ["https://static.crates.io/crates/block-buffer/0.10.4/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "block-buffer-0.10.4", + srcs = [":block-buffer-0.10.4.crate"], + crate = "block_buffer", + crate_root = "block-buffer-0.10.4.crate/src/lib.rs", + edition = "2018", + visibility = [], + deps = [":generic-array-0.14.7"], +) + +alias( + name = "bstr", + actual = ":bstr-1.10.0", + visibility = ["PUBLIC"], +) + +http_archive( + name = "bstr-1.10.0.crate", + sha256 = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c", + strip_prefix = "bstr-1.10.0", + urls = ["https://static.crates.io/crates/bstr/1.10.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "bstr-1.10.0", + srcs = [":bstr-1.10.0.crate"], + crate = "bstr", + crate_root = "bstr-1.10.0.crate/src/lib.rs", + edition = "2021", + features = [ + "alloc", + "default", + "std", + "unicode", + ], + visibility = [], + deps = [ + ":memchr-2.7.4", + ":regex-automata-0.4.8", + ":serde-1.0.208", + ], +) + +http_archive( + name = "byteorder-1.5.0.crate", + sha256 = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b", + strip_prefix = "byteorder-1.5.0", + urls = ["https://static.crates.io/crates/byteorder/1.5.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "byteorder-1.5.0", + srcs = [":byteorder-1.5.0.crate"], + crate = "byteorder", + crate_root = "byteorder-1.5.0.crate/src/lib.rs", + edition = "2021", + features = [ + "default", + "std", + ], + visibility = [], +) + +http_archive( + name = "bytes-1.7.1.crate", + sha256 = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50", + strip_prefix = "bytes-1.7.1", + urls = ["https://static.crates.io/crates/bytes/1.7.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "bytes-1.7.1", + srcs = [":bytes-1.7.1.crate"], + crate = "bytes", + crate_root = "bytes-1.7.1.crate/src/lib.rs", + edition = "2018", + features = [ + "default", + "serde", + "std", + ], + visibility = [], + deps = [":serde-1.0.208"], +) + +http_archive( + name = "cassowary-0.3.0.crate", + sha256 = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53", + strip_prefix = "cassowary-0.3.0", + urls = ["https://static.crates.io/crates/cassowary/0.3.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "cassowary-0.3.0", + srcs = [":cassowary-0.3.0.crate"], + crate = "cassowary", + crate_root = "cassowary-0.3.0.crate/src/lib.rs", + edition = "2015", + visibility = [], +) + +http_archive( + name = "cast-0.3.0.crate", + sha256 = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5", + strip_prefix = "cast-0.3.0", + urls = ["https://static.crates.io/crates/cast/0.3.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "cast-0.3.0", + srcs = [":cast-0.3.0.crate"], + crate = "cast", + crate_root = "cast-0.3.0.crate/src/lib.rs", + edition = "2018", + visibility = [], +) + +http_archive( + name = "castaway-0.2.3.crate", + sha256 = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5", + strip_prefix = "castaway-0.2.3", + urls = ["https://static.crates.io/crates/castaway/0.2.3/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "castaway-0.2.3", + srcs = [":castaway-0.2.3.crate"], + crate = "castaway", + crate_root = "castaway-0.2.3.crate/src/lib.rs", + edition = "2018", + features = [ + "alloc", + "default", + "std", + ], + visibility = [], + deps = [":rustversion-1.0.17"], +) + +http_archive( + name = "cfg-if-1.0.0.crate", + sha256 = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd", + strip_prefix = "cfg-if-1.0.0", + urls = ["https://static.crates.io/crates/cfg-if/1.0.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "cfg-if-1.0.0", + srcs = [":cfg-if-1.0.0.crate"], + crate = "cfg_if", + crate_root = "cfg-if-1.0.0.crate/src/lib.rs", + edition = "2018", + visibility = [], +) + +alias( + name = "chrono", + actual = ":chrono-0.4.38", + visibility = ["PUBLIC"], +) + +http_archive( + name = "chrono-0.4.38.crate", + sha256 = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401", + strip_prefix = "chrono-0.4.38", + urls = ["https://static.crates.io/crates/chrono/0.4.38/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "chrono-0.4.38", + srcs = [":chrono-0.4.38.crate"], + crate = "chrono", + crate_root = "chrono-0.4.38.crate/src/lib.rs", + edition = "2021", + features = [ + "alloc", + "android-tzdata", + "clock", + "default", + "iana-time-zone", + "js-sys", + "now", + "oldtime", + "std", + "wasm-bindgen", + "wasmbind", + "winapi", + "windows-targets", + ], + platform = { + "linux-arm64": dict( + deps = [":iana-time-zone-0.1.60"], + ), + "linux-x86_64": dict( + deps = [":iana-time-zone-0.1.60"], + ), + "macos-arm64": dict( + deps = [":iana-time-zone-0.1.60"], + ), + "macos-x86_64": dict( + deps = [":iana-time-zone-0.1.60"], + ), + "windows-gnu": dict( + deps = [":windows-targets-0.52.6"], + ), + "windows-msvc": dict( + deps = [":windows-targets-0.52.6"], + ), + }, + visibility = [], + deps = [":num-traits-0.2.19"], +) + +alias( + name = "chrono-english", + actual = ":chrono-english-0.1.7", + visibility = ["PUBLIC"], +) + +http_archive( + name = "chrono-english-0.1.7.crate", + sha256 = "f73d909da7eb4a7d88c679c3f5a1bc09d965754e0adb2e7627426cef96a00d6f", + strip_prefix = "chrono-english-0.1.7", + urls = ["https://static.crates.io/crates/chrono-english/0.1.7/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "chrono-english-0.1.7", + srcs = [":chrono-english-0.1.7.crate"], + crate = "chrono_english", + crate_root = "chrono-english-0.1.7.crate/src/lib.rs", + edition = "2015", + visibility = [], + deps = [ + ":chrono-0.4.38", + ":scanlex-0.1.4", + ], +) + +http_archive( + name = "ciborium-0.2.2.crate", + sha256 = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e", + strip_prefix = "ciborium-0.2.2", + urls = ["https://static.crates.io/crates/ciborium/0.2.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "ciborium-0.2.2", + srcs = [":ciborium-0.2.2.crate"], + crate = "ciborium", + crate_root = "ciborium-0.2.2.crate/src/lib.rs", + edition = "2021", + features = [ + "default", + "std", + ], + visibility = [], + deps = [ + ":ciborium-io-0.2.2", + ":ciborium-ll-0.2.2", + ":serde-1.0.208", + ], +) + +http_archive( + name = "ciborium-io-0.2.2.crate", + sha256 = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757", + strip_prefix = "ciborium-io-0.2.2", + urls = ["https://static.crates.io/crates/ciborium-io/0.2.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "ciborium-io-0.2.2", + srcs = [":ciborium-io-0.2.2.crate"], + crate = "ciborium_io", + crate_root = "ciborium-io-0.2.2.crate/src/lib.rs", + edition = "2021", + features = [ + "alloc", + "std", + ], + visibility = [], +) + +http_archive( + name = "ciborium-ll-0.2.2.crate", + sha256 = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9", + strip_prefix = "ciborium-ll-0.2.2", + urls = ["https://static.crates.io/crates/ciborium-ll/0.2.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "ciborium-ll-0.2.2", + srcs = [":ciborium-ll-0.2.2.crate"], + crate = "ciborium_ll", + crate_root = "ciborium-ll-0.2.2.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":ciborium-io-0.2.2", + ":half-2.4.1", + ], +) + +alias( + name = "clap", + actual = ":clap-4.5.20", + visibility = ["PUBLIC"], +) + +http_archive( + name = "clap-4.5.20.crate", + sha256 = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8", + strip_prefix = "clap-4.5.20", + urls = ["https://static.crates.io/crates/clap/4.5.20/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "clap-4.5.20", + srcs = [":clap-4.5.20.crate"], + crate = "clap", + crate_root = "clap-4.5.20.crate/src/lib.rs", + edition = "2021", + features = [ + "color", + "default", + "deprecated", + "derive", + "env", + "error-context", + "help", + "std", + "string", + "suggestions", + "usage", + "wrap_help", + ], + visibility = [], + deps = [ + ":clap_builder-4.5.20", + ":clap_derive-4.5.18", + ], +) + +alias( + name = "clap-markdown", + actual = ":clap-markdown-0.1.4", + visibility = ["PUBLIC"], +) + +http_archive( + name = "clap-markdown-0.1.4.crate", + sha256 = "8ebc67e6266e14f8b31541c2f204724fa2ac7ad5c17d6f5908fbb92a60f42cff", + strip_prefix = "clap-markdown-0.1.4", + urls = ["https://static.crates.io/crates/clap-markdown/0.1.4/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "clap-markdown-0.1.4", + srcs = [":clap-markdown-0.1.4.crate"], + crate = "clap_markdown", + crate_root = "clap-markdown-0.1.4.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [":clap-4.5.20"], +) + +http_archive( + name = "clap_builder-4.5.20.crate", + sha256 = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54", + strip_prefix = "clap_builder-4.5.20", + urls = ["https://static.crates.io/crates/clap_builder/4.5.20/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "clap_builder-4.5.20", + srcs = [":clap_builder-4.5.20.crate"], + crate = "clap_builder", + crate_root = "clap_builder-4.5.20.crate/src/lib.rs", + edition = "2021", + features = [ + "color", + "deprecated", + "env", + "error-context", + "help", + "std", + "string", + "suggestions", + "usage", + "wrap_help", + ], + visibility = [], + deps = [ + ":anstream-0.6.15", + ":anstyle-1.0.8", + ":clap_lex-0.7.2", + ":strsim-0.11.1", + ":terminal_size-0.4.0", + ], +) + +alias( + name = "clap_complete", + actual = ":clap_complete-4.5.33", + visibility = ["PUBLIC"], +) + +http_archive( + name = "clap_complete-4.5.33.crate", + sha256 = "9646e2e245bf62f45d39a0f3f36f1171ad1ea0d6967fd114bca72cb02a8fcdfb", + strip_prefix = "clap_complete-4.5.33", + urls = ["https://static.crates.io/crates/clap_complete/4.5.33/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "clap_complete-4.5.33", + srcs = [":clap_complete-4.5.33.crate"], + crate = "clap_complete", + crate_root = "clap_complete-4.5.33.crate/src/lib.rs", + edition = "2021", + features = ["default"], + visibility = [], + deps = [":clap-4.5.20"], +) + +alias( + name = "clap_complete_nushell", + actual = ":clap_complete_nushell-4.5.4", + visibility = ["PUBLIC"], +) + +http_archive( + name = "clap_complete_nushell-4.5.4.crate", + sha256 = "315902e790cc6e5ddd20cbd313c1d0d49db77f191e149f96397230fb82a17677", + strip_prefix = "clap_complete_nushell-4.5.4", + urls = ["https://static.crates.io/crates/clap_complete_nushell/4.5.4/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "clap_complete_nushell-4.5.4", + srcs = [":clap_complete_nushell-4.5.4.crate"], + crate = "clap_complete_nushell", + crate_root = "clap_complete_nushell-4.5.4.crate/src/lib.rs", + edition = "2021", + features = ["default"], + visibility = [], + deps = [ + ":clap-4.5.20", + ":clap_complete-4.5.33", + ], +) + +http_archive( + name = "clap_derive-4.5.18.crate", + sha256 = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab", + strip_prefix = "clap_derive-4.5.18", + urls = ["https://static.crates.io/crates/clap_derive/4.5.18/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "clap_derive-4.5.18", + srcs = [":clap_derive-4.5.18.crate"], + crate = "clap_derive", + crate_root = "clap_derive-4.5.18.crate/src/lib.rs", + edition = "2021", + features = [ + "default", + "deprecated", + ], + proc_macro = True, + visibility = [], + deps = [ + ":heck-0.5.0", + ":proc-macro2-1.0.87", + ":quote-1.0.37", + ":syn-2.0.79", + ], +) + +http_archive( + name = "clap_lex-0.7.2.crate", + sha256 = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97", + strip_prefix = "clap_lex-0.7.2", + urls = ["https://static.crates.io/crates/clap_lex/0.7.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "clap_lex-0.7.2", + srcs = [":clap_lex-0.7.2.crate"], + crate = "clap_lex", + crate_root = "clap_lex-0.7.2.crate/src/lib.rs", + edition = "2021", + visibility = [], +) + +alias( + name = "clap_mangen", + actual = ":clap_mangen-0.2.23", + visibility = ["PUBLIC"], +) + +http_archive( + name = "clap_mangen-0.2.23.crate", + sha256 = "f17415fd4dfbea46e3274fcd8d368284519b358654772afb700dc2e8d2b24eeb", + strip_prefix = "clap_mangen-0.2.23", + urls = ["https://static.crates.io/crates/clap_mangen/0.2.23/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "clap_mangen-0.2.23", + srcs = [":clap_mangen-0.2.23.crate"], + crate = "clap_mangen", + crate_root = "clap_mangen-0.2.23.crate/src/lib.rs", + edition = "2021", + features = ["default"], + visibility = [], + deps = [ + ":clap-4.5.20", + ":roff-0.2.2", + ], +) + +alias( + name = "clru", + actual = ":clru-0.6.2", + visibility = ["PUBLIC"], +) + +http_archive( + name = "clru-0.6.2.crate", + sha256 = "cbd0f76e066e64fdc5631e3bb46381254deab9ef1158292f27c8c57e3bf3fe59", + strip_prefix = "clru-0.6.2", + urls = ["https://static.crates.io/crates/clru/0.6.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "clru-0.6.2", + srcs = [":clru-0.6.2.crate"], + crate = "clru", + crate_root = "clru-0.6.2.crate/src/lib.rs", + edition = "2021", + visibility = [], +) + +http_archive( + name = "colorchoice-1.0.2.crate", + sha256 = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0", + strip_prefix = "colorchoice-1.0.2", + urls = ["https://static.crates.io/crates/colorchoice/1.0.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "colorchoice-1.0.2", + srcs = [":colorchoice-1.0.2.crate"], + crate = "colorchoice", + crate_root = "colorchoice-1.0.2.crate/src/lib.rs", + edition = "2021", + visibility = [], +) + +http_archive( + name = "compact_str-0.7.1.crate", + sha256 = "f86b9c4c00838774a6d902ef931eff7470720c51d90c2e32cfe15dc304737b3f", + strip_prefix = "compact_str-0.7.1", + urls = ["https://static.crates.io/crates/compact_str/0.7.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "compact_str-0.7.1", + srcs = [":compact_str-0.7.1.crate"], + crate = "compact_str", + crate_root = "compact_str-0.7.1.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":castaway-0.2.3", + ":cfg-if-1.0.0", + ":itoa-1.0.11", + ":ryu-1.0.18", + ":static_assertions-1.1.0", + ], +) + +alias( + name = "config", + actual = ":config-0.13.4", + visibility = ["PUBLIC"], +) + +http_archive( + name = "config-0.13.4.crate", + sha256 = "23738e11972c7643e4ec947840fc463b6a571afcd3e735bdfce7d03c7a784aca", + strip_prefix = "config-0.13.4", + urls = ["https://static.crates.io/crates/config/0.13.4/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "config-0.13.4", + srcs = [":config-0.13.4.crate"], + crate = "config", + crate_root = "config-0.13.4.crate/src/lib.rs", + edition = "2018", + features = ["toml"], + visibility = [], + deps = [ + ":async-trait-0.1.83", + ":lazy_static-1.5.0", + ":nom-7.1.3", + ":pathdiff-0.2.1", + ":serde-1.0.208", + ":toml-0.5.11", + ], +) + +http_archive( + name = "console-0.15.8.crate", + sha256 = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb", + strip_prefix = "console-0.15.8", + urls = ["https://static.crates.io/crates/console/0.15.8/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "console-0.15.8", + srcs = [":console-0.15.8.crate"], + crate = "console", + crate_root = "console-0.15.8.crate/src/lib.rs", + edition = "2018", + platform = { + "windows-gnu": dict( + deps = [ + ":encode_unicode-0.3.6", + ":windows-sys-0.52.0", + ], + ), + "windows-msvc": dict( + deps = [ + ":encode_unicode-0.3.6", + ":windows-sys-0.52.0", + ], + ), + }, + visibility = [], + deps = [ + ":lazy_static-1.5.0", + ":libc-0.2.159", + ], +) + +http_archive( + name = "core-foundation-sys-0.8.7.crate", + sha256 = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b", + strip_prefix = "core-foundation-sys-0.8.7", + urls = ["https://static.crates.io/crates/core-foundation-sys/0.8.7/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "core-foundation-sys-0.8.7", + srcs = [":core-foundation-sys-0.8.7.crate"], + crate = "core_foundation_sys", + crate_root = "core-foundation-sys-0.8.7.crate/src/lib.rs", + edition = "2018", + features = [ + "default", + "link", + ], + visibility = [], +) + +http_archive( + name = "crc32fast-1.4.2.crate", + sha256 = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3", + strip_prefix = "crc32fast-1.4.2", + urls = ["https://static.crates.io/crates/crc32fast/1.4.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "crc32fast-1.4.2", + srcs = [":crc32fast-1.4.2.crate"], + crate = "crc32fast", + crate_root = "crc32fast-1.4.2.crate/src/lib.rs", + edition = "2015", + features = [ + "default", + "std", + ], + visibility = [], + deps = [":cfg-if-1.0.0"], +) + +alias( + name = "criterion", + actual = ":criterion-0.5.1", + visibility = ["PUBLIC"], +) + +http_archive( + name = "criterion-0.5.1.crate", + sha256 = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f", + strip_prefix = "criterion-0.5.1", + urls = ["https://static.crates.io/crates/criterion/0.5.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "criterion-0.5.1", + srcs = [":criterion-0.5.1.crate"], + crate = "criterion", + crate_root = "criterion-0.5.1.crate/src/lib.rs", + edition = "2018", + env = { + "CARGO_MANIFEST_DIR": "criterion-0.5.1.crate", + "CARGO_PKG_AUTHORS": "Jorge Aparicio :Brook Heisler ", + "CARGO_PKG_DESCRIPTION": "Statistics-driven micro-benchmarking library", + "CARGO_PKG_NAME": "criterion", + "CARGO_PKG_REPOSITORY": "https://github.com/bheisler/criterion.rs", + "CARGO_PKG_VERSION": "0.5.1", + "CARGO_PKG_VERSION_MAJOR": "0", + "CARGO_PKG_VERSION_MINOR": "5", + "CARGO_PKG_VERSION_PATCH": "1", + }, + features = [ + "cargo_bench_support", + "default", + "plotters", + "rayon", + ], + visibility = [], + deps = [ + ":anes-0.1.6", + ":cast-0.3.0", + ":ciborium-0.2.2", + ":clap-4.5.20", + ":criterion-plot-0.5.0", + ":is-terminal-0.4.13", + ":itertools-0.10.5", + ":num-traits-0.2.19", + ":once_cell-1.20.2", + ":oorandom-11.1.4", + ":plotters-0.3.6", + ":rayon-1.10.0", + ":regex-1.11.0", + ":serde-1.0.208", + ":serde_derive-1.0.208", + ":serde_json-1.0.128", + ":tinytemplate-1.2.1", + ":walkdir-2.5.0", + ], +) + +http_archive( + name = "criterion-plot-0.5.0.crate", + sha256 = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1", + strip_prefix = "criterion-plot-0.5.0", + urls = ["https://static.crates.io/crates/criterion-plot/0.5.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "criterion-plot-0.5.0", + srcs = [":criterion-plot-0.5.0.crate"], + crate = "criterion_plot", + crate_root = "criterion-plot-0.5.0.crate/src/lib.rs", + edition = "2018", + visibility = [], + deps = [ + ":cast-0.3.0", + ":itertools-0.10.5", + ], +) + +http_archive( + name = "crossbeam-channel-0.5.13.crate", + sha256 = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2", + strip_prefix = "crossbeam-channel-0.5.13", + urls = ["https://static.crates.io/crates/crossbeam-channel/0.5.13/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "crossbeam-channel-0.5.13", + srcs = [":crossbeam-channel-0.5.13.crate"], + crate = "crossbeam_channel", + crate_root = "crossbeam-channel-0.5.13.crate/src/lib.rs", + edition = "2021", + features = [ + "default", + "std", + ], + visibility = [], + deps = [":crossbeam-utils-0.8.20"], +) + +http_archive( + name = "crossbeam-deque-0.8.5.crate", + sha256 = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d", + strip_prefix = "crossbeam-deque-0.8.5", + urls = ["https://static.crates.io/crates/crossbeam-deque/0.8.5/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "crossbeam-deque-0.8.5", + srcs = [":crossbeam-deque-0.8.5.crate"], + crate = "crossbeam_deque", + crate_root = "crossbeam-deque-0.8.5.crate/src/lib.rs", + edition = "2021", + features = [ + "default", + "std", + ], + visibility = [], + deps = [ + ":crossbeam-epoch-0.9.18", + ":crossbeam-utils-0.8.20", + ], +) + +http_archive( + name = "crossbeam-epoch-0.9.18.crate", + sha256 = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e", + strip_prefix = "crossbeam-epoch-0.9.18", + urls = ["https://static.crates.io/crates/crossbeam-epoch/0.9.18/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "crossbeam-epoch-0.9.18", + srcs = [":crossbeam-epoch-0.9.18.crate"], + crate = "crossbeam_epoch", + crate_root = "crossbeam-epoch-0.9.18.crate/src/lib.rs", + edition = "2021", + env = { + "CARGO_MANIFEST_DIR": "crossbeam-epoch-0.9.18.crate", + "CARGO_PKG_AUTHORS": "", + "CARGO_PKG_DESCRIPTION": "Epoch-based garbage collection", + "CARGO_PKG_NAME": "crossbeam-epoch", + "CARGO_PKG_REPOSITORY": "https://github.com/crossbeam-rs/crossbeam", + "CARGO_PKG_VERSION": "0.9.18", + "CARGO_PKG_VERSION_MAJOR": "0", + "CARGO_PKG_VERSION_MINOR": "9", + "CARGO_PKG_VERSION_PATCH": "18", + }, + features = [ + "alloc", + "std", + ], + visibility = [], + deps = [":crossbeam-utils-0.8.20"], +) + +http_archive( + name = "crossbeam-utils-0.8.20.crate", + sha256 = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80", + strip_prefix = "crossbeam-utils-0.8.20", + urls = ["https://static.crates.io/crates/crossbeam-utils/0.8.20/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "crossbeam-utils-0.8.20", + srcs = [":crossbeam-utils-0.8.20.crate"], + crate = "crossbeam_utils", + crate_root = "crossbeam-utils-0.8.20.crate/src/lib.rs", + edition = "2021", + env = { + "CARGO_MANIFEST_DIR": "crossbeam-utils-0.8.20.crate", + "CARGO_PKG_AUTHORS": "", + "CARGO_PKG_DESCRIPTION": "Utilities for concurrent programming", + "CARGO_PKG_NAME": "crossbeam-utils", + "CARGO_PKG_REPOSITORY": "https://github.com/crossbeam-rs/crossbeam", + "CARGO_PKG_VERSION": "0.8.20", + "CARGO_PKG_VERSION_MAJOR": "0", + "CARGO_PKG_VERSION_MINOR": "8", + "CARGO_PKG_VERSION_PATCH": "20", + }, + features = [ + "default", + "std", + ], + visibility = [], +) + +alias( + name = "crossterm", + actual = ":crossterm-0.27.0", + visibility = ["PUBLIC"], +) + +http_archive( + name = "crossterm-0.27.0.crate", + sha256 = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df", + strip_prefix = "crossterm-0.27.0", + urls = ["https://static.crates.io/crates/crossterm/0.27.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "crossterm-0.27.0", + srcs = [":crossterm-0.27.0.crate"], + crate = "crossterm", + crate_root = "crossterm-0.27.0.crate/src/lib.rs", + edition = "2021", + features = [ + "bracketed-paste", + "default", + "events", + "windows", + ], + platform = { + "linux-arm64": dict( + deps = [ + ":libc-0.2.159", + ":mio-0.8.11", + ":signal-hook-0.3.17", + ":signal-hook-mio-0.2.4", + ], + ), + "linux-x86_64": dict( + deps = [ + ":libc-0.2.159", + ":mio-0.8.11", + ":signal-hook-0.3.17", + ":signal-hook-mio-0.2.4", + ], + ), + "macos-arm64": dict( + deps = [ + ":libc-0.2.159", + ":mio-0.8.11", + ":signal-hook-0.3.17", + ":signal-hook-mio-0.2.4", + ], + ), + "macos-x86_64": dict( + deps = [ + ":libc-0.2.159", + ":mio-0.8.11", + ":signal-hook-0.3.17", + ":signal-hook-mio-0.2.4", + ], + ), + "windows-gnu": dict( + deps = [ + ":crossterm_winapi-0.9.1", + ":winapi-0.3.9", + ], + ), + "windows-msvc": dict( + deps = [ + ":crossterm_winapi-0.9.1", + ":winapi-0.3.9", + ], + ), + }, + visibility = [], + deps = [ + ":bitflags-2.6.0", + ":parking_lot-0.12.3", + ], +) + +http_archive( + name = "crossterm_winapi-0.9.1.crate", + sha256 = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b", + strip_prefix = "crossterm_winapi-0.9.1", + urls = ["https://static.crates.io/crates/crossterm_winapi/0.9.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "crossterm_winapi-0.9.1", + srcs = [":crossterm_winapi-0.9.1.crate"], + crate = "crossterm_winapi", + crate_root = "crossterm_winapi-0.9.1.crate/src/lib.rs", + edition = "2018", + platform = { + "windows-gnu": dict( + deps = [":winapi-0.3.9"], + ), + "windows-msvc": dict( + deps = [":winapi-0.3.9"], + ), + }, + visibility = [], +) + +http_archive( + name = "crypto-common-0.1.6.crate", + sha256 = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3", + strip_prefix = "crypto-common-0.1.6", + urls = ["https://static.crates.io/crates/crypto-common/0.1.6/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "crypto-common-0.1.6", + srcs = [":crypto-common-0.1.6.crate"], + crate = "crypto_common", + crate_root = "crypto-common-0.1.6.crate/src/lib.rs", + edition = "2018", + features = ["std"], + visibility = [], + deps = [ + ":generic-array-0.14.7", + ":typenum-1.17.0", + ], +) + +http_archive( + name = "dashmap-6.0.1.crate", + sha256 = "804c8821570c3f8b70230c2ba75ffa5c0f9a4189b9a432b6656c536712acae28", + strip_prefix = "dashmap-6.0.1", + urls = ["https://static.crates.io/crates/dashmap/6.0.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "dashmap-6.0.1", + srcs = [":dashmap-6.0.1.crate"], + crate = "dashmap", + crate_root = "dashmap-6.0.1.crate/src/lib.rs", + edition = "2018", + visibility = [], + deps = [ + ":cfg-if-1.0.0", + ":crossbeam-utils-0.8.20", + ":hashbrown-0.14.5", + ":lock_api-0.4.12", + ":once_cell-1.20.2", + ":parking_lot_core-0.9.10", + ], +) + +http_archive( + name = "diff-0.1.13.crate", + sha256 = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8", + strip_prefix = "diff-0.1.13", + urls = ["https://static.crates.io/crates/diff/0.1.13/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "diff-0.1.13", + srcs = [":diff-0.1.13.crate"], + crate = "diff", + crate_root = "diff-0.1.13.crate/src/lib.rs", + edition = "2015", + visibility = [], +) + +http_archive( + name = "difflib-0.4.0.crate", + sha256 = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8", + strip_prefix = "difflib-0.4.0", + urls = ["https://static.crates.io/crates/difflib/0.4.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "difflib-0.4.0", + srcs = [":difflib-0.4.0.crate"], + crate = "difflib", + crate_root = "difflib-0.4.0.crate/src/lib.rs", + edition = "2015", + visibility = [], +) + +alias( + name = "digest", + actual = ":digest-0.10.7", + visibility = ["PUBLIC"], +) + +http_archive( + name = "digest-0.10.7.crate", + sha256 = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292", + strip_prefix = "digest-0.10.7", + urls = ["https://static.crates.io/crates/digest/0.10.7/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "digest-0.10.7", + srcs = [":digest-0.10.7.crate"], + crate = "digest", + crate_root = "digest-0.10.7.crate/src/lib.rs", + edition = "2018", + features = [ + "alloc", + "block-buffer", + "core-api", + "default", + "mac", + "std", + "subtle", + ], + visibility = [], + deps = [ + ":block-buffer-0.10.4", + ":crypto-common-0.1.6", + ":subtle-2.6.1", + ], +) + +alias( + name = "dirs", + actual = ":dirs-5.0.1", + visibility = ["PUBLIC"], +) + +http_archive( + name = "dirs-5.0.1.crate", + sha256 = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225", + strip_prefix = "dirs-5.0.1", + urls = ["https://static.crates.io/crates/dirs/5.0.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "dirs-5.0.1", + srcs = [":dirs-5.0.1.crate"], + crate = "dirs", + crate_root = "dirs-5.0.1.crate/src/lib.rs", + edition = "2015", + visibility = [], + deps = [":dirs-sys-0.4.1"], +) + +http_archive( + name = "dirs-sys-0.4.1.crate", + sha256 = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c", + strip_prefix = "dirs-sys-0.4.1", + urls = ["https://static.crates.io/crates/dirs-sys/0.4.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "dirs-sys-0.4.1", + srcs = [":dirs-sys-0.4.1.crate"], + crate = "dirs_sys", + crate_root = "dirs-sys-0.4.1.crate/src/lib.rs", + edition = "2015", + platform = { + "linux-arm64": dict( + deps = [":libc-0.2.159"], + ), + "linux-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "macos-arm64": dict( + deps = [":libc-0.2.159"], + ), + "macos-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "windows-gnu": dict( + deps = [":windows-sys-0.48.0"], + ), + "windows-msvc": dict( + deps = [":windows-sys-0.48.0"], + ), + }, + visibility = [], + deps = [":option-ext-0.2.0"], +) + +http_archive( + name = "doc-comment-0.3.3.crate", + sha256 = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10", + strip_prefix = "doc-comment-0.3.3", + urls = ["https://static.crates.io/crates/doc-comment/0.3.3/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "doc-comment-0.3.3", + srcs = [":doc-comment-0.3.3.crate"], + crate = "doc_comment", + crate_root = "doc-comment-0.3.3.crate/src/lib.rs", + edition = "2015", + visibility = [], +) + +alias( + name = "dunce", + actual = ":dunce-1.0.5", + visibility = ["PUBLIC"], +) + +http_archive( + name = "dunce-1.0.5.crate", + sha256 = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813", + strip_prefix = "dunce-1.0.5", + urls = ["https://static.crates.io/crates/dunce/1.0.5/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "dunce-1.0.5", + srcs = [":dunce-1.0.5.crate"], + crate = "dunce", + crate_root = "dunce-1.0.5.crate/src/lib.rs", + edition = "2021", + visibility = [], +) + +alias( + name = "either", + actual = ":either-1.13.0", + visibility = ["PUBLIC"], +) + +http_archive( + name = "either-1.13.0.crate", + sha256 = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0", + strip_prefix = "either-1.13.0", + urls = ["https://static.crates.io/crates/either/1.13.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "either-1.13.0", + srcs = [":either-1.13.0.crate"], + crate = "either", + crate_root = "either-1.13.0.crate/src/lib.rs", + edition = "2018", + features = [ + "default", + "use_std", + ], + visibility = [], +) + +http_archive( + name = "encode_unicode-0.3.6.crate", + sha256 = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f", + strip_prefix = "encode_unicode-0.3.6", + urls = ["https://static.crates.io/crates/encode_unicode/0.3.6/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "encode_unicode-0.3.6", + srcs = [":encode_unicode-0.3.6.crate"], + crate = "encode_unicode", + crate_root = "encode_unicode-0.3.6.crate/src/lib.rs", + edition = "2015", + features = [ + "default", + "std", + ], + visibility = [], +) + +http_archive( + name = "encoding_rs-0.8.34.crate", + sha256 = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59", + strip_prefix = "encoding_rs-0.8.34", + urls = ["https://static.crates.io/crates/encoding_rs/0.8.34/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "encoding_rs-0.8.34", + srcs = [":encoding_rs-0.8.34.crate"], + crate = "encoding_rs", + crate_root = "encoding_rs-0.8.34.crate/src/lib.rs", + edition = "2018", + features = [ + "alloc", + "default", + ], + visibility = [], + deps = [":cfg-if-1.0.0"], +) + +http_archive( + name = "equivalent-1.0.1.crate", + sha256 = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5", + strip_prefix = "equivalent-1.0.1", + urls = ["https://static.crates.io/crates/equivalent/1.0.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "equivalent-1.0.1", + srcs = [":equivalent-1.0.1.crate"], + crate = "equivalent", + crate_root = "equivalent-1.0.1.crate/src/lib.rs", + edition = "2015", + visibility = [], +) + +http_archive( + name = "errno-0.3.9.crate", + sha256 = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba", + strip_prefix = "errno-0.3.9", + urls = ["https://static.crates.io/crates/errno/0.3.9/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "errno-0.3.9", + srcs = [":errno-0.3.9.crate"], + crate = "errno", + crate_root = "errno-0.3.9.crate/src/lib.rs", + edition = "2018", + features = ["std"], + platform = { + "linux-arm64": dict( + deps = [":libc-0.2.159"], + ), + "linux-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "macos-arm64": dict( + deps = [":libc-0.2.159"], + ), + "macos-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "windows-gnu": dict( + deps = [":windows-sys-0.52.0"], + ), + "windows-msvc": dict( + deps = [":windows-sys-0.52.0"], + ), + }, + visibility = [], +) + +alias( + name = "esl01-renderdag", + actual = ":esl01-renderdag-0.3.0", + visibility = ["PUBLIC"], +) + +http_archive( + name = "esl01-renderdag-0.3.0.crate", + sha256 = "3a1840969ab8be31e186bb6d2f672d586dcd203dd4019a80dc1277a14686eca9", + strip_prefix = "esl01-renderdag-0.3.0", + urls = ["https://static.crates.io/crates/esl01-renderdag/0.3.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "esl01-renderdag-0.3.0", + srcs = [":esl01-renderdag-0.3.0.crate"], + crate = "renderdag", + crate_root = "esl01-renderdag-0.3.0.crate/src/lib.rs", + edition = "2021", + features = ["default"], + visibility = [], + deps = [ + ":bitflags-1.3.2", + ":itertools-0.10.5", + ], +) + +http_archive( + name = "faster-hex-0.9.0.crate", + sha256 = "a2a2b11eda1d40935b26cf18f6833c526845ae8c41e58d09af6adeb6f0269183", + strip_prefix = "faster-hex-0.9.0", + urls = ["https://static.crates.io/crates/faster-hex/0.9.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "faster-hex-0.9.0", + srcs = [":faster-hex-0.9.0.crate"], + crate = "faster_hex", + crate_root = "faster-hex-0.9.0.crate/src/lib.rs", + edition = "2018", + visibility = [], +) + +http_archive( + name = "fastrand-2.1.1.crate", + sha256 = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6", + strip_prefix = "fastrand-2.1.1", + urls = ["https://static.crates.io/crates/fastrand/2.1.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "fastrand-2.1.1", + srcs = [":fastrand-2.1.1.crate"], + crate = "fastrand", + crate_root = "fastrand-2.1.1.crate/src/lib.rs", + edition = "2018", + features = [ + "alloc", + "default", + "std", + ], + visibility = [], +) + +http_archive( + name = "filetime-0.2.24.crate", + sha256 = "bf401df4a4e3872c4fe8151134cf483738e74b67fc934d6532c882b3d24a4550", + strip_prefix = "filetime-0.2.24", + urls = ["https://static.crates.io/crates/filetime/0.2.24/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "filetime-0.2.24", + srcs = [":filetime-0.2.24.crate"], + crate = "filetime", + crate_root = "filetime-0.2.24.crate/src/lib.rs", + edition = "2018", + platform = { + "linux-arm64": dict( + deps = [":libc-0.2.159"], + ), + "linux-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "macos-arm64": dict( + deps = [":libc-0.2.159"], + ), + "macos-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "windows-gnu": dict( + deps = [":windows-sys-0.59.0"], + ), + "windows-msvc": dict( + deps = [":windows-sys-0.59.0"], + ), + }, + visibility = [], + deps = [":cfg-if-1.0.0"], +) + +http_archive( + name = "fixedbitset-0.4.2.crate", + sha256 = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80", + strip_prefix = "fixedbitset-0.4.2", + urls = ["https://static.crates.io/crates/fixedbitset/0.4.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "fixedbitset-0.4.2", + srcs = [":fixedbitset-0.4.2.crate"], + crate = "fixedbitset", + crate_root = "fixedbitset-0.4.2.crate/src/lib.rs", + edition = "2015", + visibility = [], +) + +http_archive( + name = "flate2-1.0.32.crate", + sha256 = "9c0596c1eac1f9e04ed902702e9878208b336edc9d6fddc8a48387349bab3666", + strip_prefix = "flate2-1.0.32", + urls = ["https://static.crates.io/crates/flate2/1.0.32/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "flate2-1.0.32", + srcs = [":flate2-1.0.32.crate"], + crate = "flate2", + crate_root = "flate2-1.0.32.crate/src/lib.rs", + edition = "2018", + features = [ + "any_impl", + "miniz_oxide", + "rust_backend", + ], + visibility = [], + deps = [ + ":crc32fast-1.4.2", + ":miniz_oxide-0.8.0", + ], +) + +http_archive( + name = "fnv-1.0.7.crate", + sha256 = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1", + strip_prefix = "fnv-1.0.7", + urls = ["https://static.crates.io/crates/fnv/1.0.7/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "fnv-1.0.7", + srcs = [":fnv-1.0.7.crate"], + crate = "fnv", + crate_root = "fnv-1.0.7.crate/lib.rs", + edition = "2015", + features = [ + "default", + "std", + ], + visibility = [], +) + +http_archive( + name = "form_urlencoded-1.2.1.crate", + sha256 = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456", + strip_prefix = "form_urlencoded-1.2.1", + urls = ["https://static.crates.io/crates/form_urlencoded/1.2.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "form_urlencoded-1.2.1", + srcs = [":form_urlencoded-1.2.1.crate"], + crate = "form_urlencoded", + crate_root = "form_urlencoded-1.2.1.crate/src/lib.rs", + edition = "2018", + features = [ + "alloc", + "default", + "std", + ], + visibility = [], + deps = [":percent-encoding-2.3.1"], +) + +http_archive( + name = "futures-0.1.31.crate", + sha256 = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678", + strip_prefix = "futures-0.1.31", + urls = ["https://static.crates.io/crates/futures/0.1.31/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "futures-0.1.31", + srcs = [":futures-0.1.31.crate"], + crate = "futures", + crate_root = "futures-0.1.31.crate/src/lib.rs", + edition = "2015", + features = [ + "default", + "use_std", + "with-deprecated", + ], + visibility = [], +) + +alias( + name = "futures", + actual = ":futures-0.3.31", + visibility = ["PUBLIC"], +) + +http_archive( + name = "futures-0.3.31.crate", + sha256 = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876", + strip_prefix = "futures-0.3.31", + urls = ["https://static.crates.io/crates/futures/0.3.31/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "futures-0.3.31", + srcs = [":futures-0.3.31.crate"], + crate = "futures", + crate_root = "futures-0.3.31.crate/src/lib.rs", + edition = "2018", + features = [ + "alloc", + "async-await", + "compat", + "default", + "executor", + "futures-executor", + "std", + ], + visibility = [], + deps = [ + ":futures-channel-0.3.31", + ":futures-core-0.3.31", + ":futures-executor-0.3.31", + ":futures-io-0.3.31", + ":futures-sink-0.3.31", + ":futures-task-0.3.31", + ":futures-util-0.3.31", + ], +) + +http_archive( + name = "futures-channel-0.3.31.crate", + sha256 = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10", + strip_prefix = "futures-channel-0.3.31", + urls = ["https://static.crates.io/crates/futures-channel/0.3.31/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "futures-channel-0.3.31", + srcs = [":futures-channel-0.3.31.crate"], + crate = "futures_channel", + crate_root = "futures-channel-0.3.31.crate/src/lib.rs", + edition = "2018", + env = { + "CARGO_MANIFEST_DIR": "futures-channel-0.3.31.crate", + "CARGO_PKG_AUTHORS": "", + "CARGO_PKG_DESCRIPTION": "Channels for asynchronous communication using futures-rs.\n", + "CARGO_PKG_NAME": "futures-channel", + "CARGO_PKG_REPOSITORY": "https://github.com/rust-lang/futures-rs", + "CARGO_PKG_VERSION": "0.3.31", + "CARGO_PKG_VERSION_MAJOR": "0", + "CARGO_PKG_VERSION_MINOR": "3", + "CARGO_PKG_VERSION_PATCH": "31", + }, + features = [ + "alloc", + "futures-sink", + "sink", + "std", + ], + visibility = [], + deps = [ + ":futures-core-0.3.31", + ":futures-sink-0.3.31", + ], +) + +http_archive( + name = "futures-core-0.3.31.crate", + sha256 = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e", + strip_prefix = "futures-core-0.3.31", + urls = ["https://static.crates.io/crates/futures-core/0.3.31/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "futures-core-0.3.31", + srcs = [":futures-core-0.3.31.crate"], + crate = "futures_core", + crate_root = "futures-core-0.3.31.crate/src/lib.rs", + edition = "2018", + env = { + "CARGO_MANIFEST_DIR": "futures-core-0.3.31.crate", + "CARGO_PKG_AUTHORS": "", + "CARGO_PKG_DESCRIPTION": "The core traits and types in for the `futures` library.\n", + "CARGO_PKG_NAME": "futures-core", + "CARGO_PKG_REPOSITORY": "https://github.com/rust-lang/futures-rs", + "CARGO_PKG_VERSION": "0.3.31", + "CARGO_PKG_VERSION_MAJOR": "0", + "CARGO_PKG_VERSION_MINOR": "3", + "CARGO_PKG_VERSION_PATCH": "31", + }, + features = [ + "alloc", + "default", + "std", + ], + visibility = [], +) + +http_archive( + name = "futures-executor-0.3.31.crate", + sha256 = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f", + strip_prefix = "futures-executor-0.3.31", + urls = ["https://static.crates.io/crates/futures-executor/0.3.31/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "futures-executor-0.3.31", + srcs = [":futures-executor-0.3.31.crate"], + crate = "futures_executor", + crate_root = "futures-executor-0.3.31.crate/src/lib.rs", + edition = "2018", + features = ["std"], + visibility = [], + deps = [ + ":futures-core-0.3.31", + ":futures-task-0.3.31", + ":futures-util-0.3.31", + ], +) + +http_archive( + name = "futures-io-0.3.31.crate", + sha256 = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6", + strip_prefix = "futures-io-0.3.31", + urls = ["https://static.crates.io/crates/futures-io/0.3.31/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "futures-io-0.3.31", + srcs = [":futures-io-0.3.31.crate"], + crate = "futures_io", + crate_root = "futures-io-0.3.31.crate/src/lib.rs", + edition = "2018", + features = [ + "default", + "std", + ], + visibility = [], +) + +http_archive( + name = "futures-macro-0.3.31.crate", + sha256 = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650", + strip_prefix = "futures-macro-0.3.31", + urls = ["https://static.crates.io/crates/futures-macro/0.3.31/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "futures-macro-0.3.31", + srcs = [":futures-macro-0.3.31.crate"], + crate = "futures_macro", + crate_root = "futures-macro-0.3.31.crate/src/lib.rs", + edition = "2018", + proc_macro = True, + visibility = [], + deps = [ + ":proc-macro2-1.0.87", + ":quote-1.0.37", + ":syn-2.0.79", + ], +) + +http_archive( + name = "futures-sink-0.3.31.crate", + sha256 = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7", + strip_prefix = "futures-sink-0.3.31", + urls = ["https://static.crates.io/crates/futures-sink/0.3.31/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "futures-sink-0.3.31", + srcs = [":futures-sink-0.3.31.crate"], + crate = "futures_sink", + crate_root = "futures-sink-0.3.31.crate/src/lib.rs", + edition = "2018", + features = [ + "alloc", + "default", + "std", + ], + visibility = [], +) + +http_archive( + name = "futures-task-0.3.31.crate", + sha256 = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988", + strip_prefix = "futures-task-0.3.31", + urls = ["https://static.crates.io/crates/futures-task/0.3.31/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "futures-task-0.3.31", + srcs = [":futures-task-0.3.31.crate"], + crate = "futures_task", + crate_root = "futures-task-0.3.31.crate/src/lib.rs", + edition = "2018", + env = { + "CARGO_MANIFEST_DIR": "futures-task-0.3.31.crate", + "CARGO_PKG_AUTHORS": "", + "CARGO_PKG_DESCRIPTION": "Tools for working with tasks.\n", + "CARGO_PKG_NAME": "futures-task", + "CARGO_PKG_REPOSITORY": "https://github.com/rust-lang/futures-rs", + "CARGO_PKG_VERSION": "0.3.31", + "CARGO_PKG_VERSION_MAJOR": "0", + "CARGO_PKG_VERSION_MINOR": "3", + "CARGO_PKG_VERSION_PATCH": "31", + }, + features = [ + "alloc", + "std", + ], + visibility = [], +) + +http_archive( + name = "futures-util-0.3.31.crate", + sha256 = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81", + strip_prefix = "futures-util-0.3.31", + urls = ["https://static.crates.io/crates/futures-util/0.3.31/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "futures-util-0.3.31", + srcs = [":futures-util-0.3.31.crate"], + crate = "futures_util", + crate_root = "futures-util-0.3.31.crate/src/lib.rs", + edition = "2018", + env = { + "CARGO_MANIFEST_DIR": "futures-util-0.3.31.crate", + "CARGO_PKG_AUTHORS": "", + "CARGO_PKG_DESCRIPTION": "Common utilities and extension traits for the futures-rs library.\n", + "CARGO_PKG_NAME": "futures-util", + "CARGO_PKG_REPOSITORY": "https://github.com/rust-lang/futures-rs", + "CARGO_PKG_VERSION": "0.3.31", + "CARGO_PKG_VERSION_MAJOR": "0", + "CARGO_PKG_VERSION_MINOR": "3", + "CARGO_PKG_VERSION_PATCH": "31", + }, + features = [ + "alloc", + "async-await", + "async-await-macro", + "channel", + "compat", + "futures-channel", + "futures-io", + "futures-macro", + "futures-sink", + "futures_01", + "io", + "memchr", + "sink", + "slab", + "std", + ], + named_deps = { + "futures_01": ":futures-0.1.31", + }, + visibility = [], + deps = [ + ":futures-channel-0.3.31", + ":futures-core-0.3.31", + ":futures-io-0.3.31", + ":futures-macro-0.3.31", + ":futures-sink-0.3.31", + ":futures-task-0.3.31", + ":memchr-2.7.4", + ":pin-project-lite-0.2.14", + ":pin-utils-0.1.0", + ":slab-0.4.9", + ], +) + +http_archive( + name = "generic-array-0.14.7.crate", + sha256 = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a", + strip_prefix = "generic-array-0.14.7", + urls = ["https://static.crates.io/crates/generic-array/0.14.7/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "generic-array-0.14.7", + srcs = [":generic-array-0.14.7.crate"], + crate = "generic_array", + crate_root = "generic-array-0.14.7.crate/src/lib.rs", + edition = "2015", + features = ["more_lengths"], + visibility = [], + deps = [":typenum-1.17.0"], +) + +http_archive( + name = "getrandom-0.2.15.crate", + sha256 = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7", + strip_prefix = "getrandom-0.2.15", + urls = ["https://static.crates.io/crates/getrandom/0.2.15/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "getrandom-0.2.15", + srcs = [":getrandom-0.2.15.crate"], + crate = "getrandom", + crate_root = "getrandom-0.2.15.crate/src/lib.rs", + edition = "2018", + features = ["std"], + platform = { + "linux-arm64": dict( + deps = [":libc-0.2.159"], + ), + "linux-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "macos-arm64": dict( + deps = [":libc-0.2.159"], + ), + "macos-x86_64": dict( + deps = [":libc-0.2.159"], + ), + }, + visibility = [], + deps = [":cfg-if-1.0.0"], +) + +alias( + name = "git2", + actual = ":git2-0.19.0", + visibility = ["PUBLIC"], +) + +http_archive( + name = "git2-0.19.0.crate", + sha256 = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724", + strip_prefix = "git2-0.19.0", + urls = ["https://static.crates.io/crates/git2/0.19.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "git2-0.19.0", + srcs = [":git2-0.19.0.crate"], + crate = "git2", + crate_root = "git2-0.19.0.crate/src/lib.rs", + edition = "2018", + env = { + "CARGO_MANIFEST_DIR": "git2-0.19.0.crate", + "CARGO_PKG_AUTHORS": "Josh Triplett :Alex Crichton ", + "CARGO_PKG_DESCRIPTION": "Bindings to libgit2 for interoperating with git repositories. This library is\nboth threadsafe and memory safe and allows both reading and writing git\nrepositories.\n", + "CARGO_PKG_NAME": "git2", + "CARGO_PKG_REPOSITORY": "https://github.com/rust-lang/git2-rs", + "CARGO_PKG_VERSION": "0.19.0", + "CARGO_PKG_VERSION_MAJOR": "0", + "CARGO_PKG_VERSION_MINOR": "19", + "CARGO_PKG_VERSION_PATCH": "0", + }, + features = [ + "default", + "https", + "openssl-probe", + "openssl-sys", + "ssh", + "ssh_key_from_memory", + "vendored-libgit2", + ], + platform = { + "linux-arm64": dict( + deps = [ + ":openssl-probe-0.1.5", + ":openssl-sys-0.9.103", + ], + ), + "linux-x86_64": dict( + deps = [ + ":openssl-probe-0.1.5", + ":openssl-sys-0.9.103", + ], + ), + }, + visibility = [], + deps = [ + ":bitflags-2.6.0", + ":libc-0.2.159", + ":libgit2-sys-0.17.0+1.8.1", + ":log-0.4.22", + ":url-2.5.2", + ], +) + +alias( + name = "gix", + actual = ":gix-0.66.0", + visibility = ["PUBLIC"], +) + +http_archive( + name = "gix-0.66.0.crate", + sha256 = "9048b8d1ae2104f045cb37e5c450fc49d5d8af22609386bfc739c11ba88995eb", + strip_prefix = "gix-0.66.0", + urls = ["https://static.crates.io/crates/gix/0.66.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-0.66.0", + srcs = [":gix-0.66.0.crate"], + crate = "gix", + crate_root = "gix-0.66.0.crate/src/lib.rs", + edition = "2021", + env = { + "CARGO_MANIFEST_DIR": "gix-0.66.0.crate", + "CARGO_PKG_AUTHORS": "Sebastian Thiel ", + "CARGO_PKG_DESCRIPTION": "Interact with git repositories just like git would", + "CARGO_PKG_NAME": "gix", + "CARGO_PKG_REPOSITORY": "https://github.com/Byron/gitoxide", + "CARGO_PKG_VERSION": "0.66.0", + "CARGO_PKG_VERSION_MAJOR": "0", + "CARGO_PKG_VERSION_MINOR": "66", + "CARGO_PKG_VERSION_PATCH": "0", + }, + features = [ + "attributes", + "blob-diff", + "command", + "excludes", + "index", + "max-control", + "max-performance-safe", + "pack-cache-lru-dynamic", + "pack-cache-lru-static", + "parallel", + ], + visibility = [], + deps = [ + ":gix-actor-0.32.0", + ":gix-attributes-0.22.5", + ":gix-command-0.3.9", + ":gix-commitgraph-0.24.3", + ":gix-config-0.40.0", + ":gix-date-0.9.0", + ":gix-diff-0.46.0", + ":gix-discover-0.35.0", + ":gix-features-0.38.2", + ":gix-filter-0.13.0", + ":gix-fs-0.11.3", + ":gix-glob-0.16.5", + ":gix-hash-0.14.2", + ":gix-hashtable-0.5.2", + ":gix-ignore-0.11.4", + ":gix-index-0.35.0", + ":gix-lock-14.0.0", + ":gix-object-0.44.0", + ":gix-odb-0.63.0", + ":gix-pack-0.53.0", + ":gix-path-0.10.10", + ":gix-pathspec-0.7.7", + ":gix-ref-0.47.0", + ":gix-refspec-0.25.0", + ":gix-revision-0.29.0", + ":gix-revwalk-0.15.0", + ":gix-sec-0.10.8", + ":gix-submodule-0.14.0", + ":gix-tempfile-14.0.2", + ":gix-trace-0.1.9", + ":gix-traverse-0.41.0", + ":gix-url-0.27.5", + ":gix-utils-0.1.12", + ":gix-validate-0.9.0", + ":gix-worktree-0.36.0", + ":once_cell-1.20.2", + ":smallvec-1.13.2", + ":thiserror-1.0.64", + ], +) + +http_archive( + name = "gix-actor-0.32.0.crate", + sha256 = "fc19e312cd45c4a66cd003f909163dc2f8e1623e30a0c0c6df3776e89b308665", + strip_prefix = "gix-actor-0.32.0", + urls = ["https://static.crates.io/crates/gix-actor/0.32.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-actor-0.32.0", + srcs = [":gix-actor-0.32.0.crate"], + crate = "gix_actor", + crate_root = "gix-actor-0.32.0.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":bstr-1.10.0", + ":gix-date-0.9.0", + ":gix-utils-0.1.12", + ":itoa-1.0.11", + ":thiserror-1.0.64", + ":winnow-0.6.18", + ], +) + +http_archive( + name = "gix-attributes-0.22.5.crate", + sha256 = "ebccbf25aa4a973dd352564a9000af69edca90623e8a16dad9cbc03713131311", + strip_prefix = "gix-attributes-0.22.5", + urls = ["https://static.crates.io/crates/gix-attributes/0.22.5/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-attributes-0.22.5", + srcs = [":gix-attributes-0.22.5.crate"], + crate = "gix_attributes", + crate_root = "gix-attributes-0.22.5.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":bstr-1.10.0", + ":gix-glob-0.16.5", + ":gix-path-0.10.10", + ":gix-quote-0.4.12", + ":gix-trace-0.1.9", + ":kstring-2.0.2", + ":smallvec-1.13.2", + ":thiserror-1.0.64", + ":unicode-bom-2.0.3", + ], +) + +http_archive( + name = "gix-bitmap-0.2.11.crate", + sha256 = "a371db66cbd4e13f0ed9dc4c0fea712d7276805fccc877f77e96374d317e87ae", + strip_prefix = "gix-bitmap-0.2.11", + urls = ["https://static.crates.io/crates/gix-bitmap/0.2.11/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-bitmap-0.2.11", + srcs = [":gix-bitmap-0.2.11.crate"], + crate = "gix_bitmap", + crate_root = "gix-bitmap-0.2.11.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [":thiserror-1.0.64"], +) + +http_archive( + name = "gix-chunk-0.4.8.crate", + sha256 = "45c8751169961ba7640b513c3b24af61aa962c967aaf04116734975cd5af0c52", + strip_prefix = "gix-chunk-0.4.8", + urls = ["https://static.crates.io/crates/gix-chunk/0.4.8/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-chunk-0.4.8", + srcs = [":gix-chunk-0.4.8.crate"], + crate = "gix_chunk", + crate_root = "gix-chunk-0.4.8.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [":thiserror-1.0.64"], +) + +http_archive( + name = "gix-command-0.3.9.crate", + sha256 = "dff2e692b36bbcf09286c70803006ca3fd56551a311de450be317a0ab8ea92e7", + strip_prefix = "gix-command-0.3.9", + urls = ["https://static.crates.io/crates/gix-command/0.3.9/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-command-0.3.9", + srcs = [":gix-command-0.3.9.crate"], + crate = "gix_command", + crate_root = "gix-command-0.3.9.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":bstr-1.10.0", + ":gix-path-0.10.10", + ":gix-trace-0.1.9", + ":shell-words-1.1.0", + ], +) + +http_archive( + name = "gix-commitgraph-0.24.3.crate", + sha256 = "133b06f67f565836ec0c473e2116a60fb74f80b6435e21d88013ac0e3c60fc78", + strip_prefix = "gix-commitgraph-0.24.3", + urls = ["https://static.crates.io/crates/gix-commitgraph/0.24.3/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-commitgraph-0.24.3", + srcs = [":gix-commitgraph-0.24.3.crate"], + crate = "gix_commitgraph", + crate_root = "gix-commitgraph-0.24.3.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":bstr-1.10.0", + ":gix-chunk-0.4.8", + ":gix-features-0.38.2", + ":gix-hash-0.14.2", + ":memmap2-0.9.4", + ":thiserror-1.0.64", + ], +) + +http_archive( + name = "gix-config-0.40.0.crate", + sha256 = "78e797487e6ca3552491de1131b4f72202f282fb33f198b1c34406d765b42bb0", + strip_prefix = "gix-config-0.40.0", + urls = ["https://static.crates.io/crates/gix-config/0.40.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-config-0.40.0", + srcs = [":gix-config-0.40.0.crate"], + crate = "gix_config", + crate_root = "gix-config-0.40.0.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":bstr-1.10.0", + ":gix-config-value-0.14.8", + ":gix-features-0.38.2", + ":gix-glob-0.16.5", + ":gix-path-0.10.10", + ":gix-ref-0.47.0", + ":gix-sec-0.10.8", + ":memchr-2.7.4", + ":once_cell-1.20.2", + ":smallvec-1.13.2", + ":thiserror-1.0.64", + ":unicode-bom-2.0.3", + ":winnow-0.6.18", + ], +) + +http_archive( + name = "gix-config-value-0.14.8.crate", + sha256 = "03f76169faa0dec598eac60f83d7fcdd739ec16596eca8fb144c88973dbe6f8c", + strip_prefix = "gix-config-value-0.14.8", + urls = ["https://static.crates.io/crates/gix-config-value/0.14.8/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-config-value-0.14.8", + srcs = [":gix-config-value-0.14.8.crate"], + crate = "gix_config_value", + crate_root = "gix-config-value-0.14.8.crate/src/lib.rs", + edition = "2021", + platform = { + "linux-arm64": dict( + deps = [":libc-0.2.159"], + ), + "linux-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "macos-arm64": dict( + deps = [":libc-0.2.159"], + ), + "macos-x86_64": dict( + deps = [":libc-0.2.159"], + ), + }, + visibility = [], + deps = [ + ":bitflags-2.6.0", + ":bstr-1.10.0", + ":gix-path-0.10.10", + ":thiserror-1.0.64", + ], +) + +http_archive( + name = "gix-date-0.9.0.crate", + sha256 = "35c84b7af01e68daf7a6bb8bb909c1ff5edb3ce4326f1f43063a5a96d3c3c8a5", + strip_prefix = "gix-date-0.9.0", + urls = ["https://static.crates.io/crates/gix-date/0.9.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-date-0.9.0", + srcs = [":gix-date-0.9.0.crate"], + crate = "gix_date", + crate_root = "gix-date-0.9.0.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":bstr-1.10.0", + ":itoa-1.0.11", + ":jiff-0.1.8", + ":thiserror-1.0.64", + ], +) + +http_archive( + name = "gix-diff-0.46.0.crate", + sha256 = "92c9afd80fff00f8b38b1c1928442feb4cd6d2232a6ed806b6b193151a3d336c", + strip_prefix = "gix-diff-0.46.0", + urls = ["https://static.crates.io/crates/gix-diff/0.46.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-diff-0.46.0", + srcs = [":gix-diff-0.46.0.crate"], + crate = "gix_diff", + crate_root = "gix-diff-0.46.0.crate/src/lib.rs", + edition = "2021", + features = ["blob"], + visibility = [], + deps = [ + ":bstr-1.10.0", + ":gix-command-0.3.9", + ":gix-filter-0.13.0", + ":gix-fs-0.11.3", + ":gix-hash-0.14.2", + ":gix-object-0.44.0", + ":gix-path-0.10.10", + ":gix-tempfile-14.0.2", + ":gix-trace-0.1.9", + ":gix-worktree-0.36.0", + ":imara-diff-0.1.7", + ":thiserror-1.0.64", + ], +) + +http_archive( + name = "gix-discover-0.35.0.crate", + sha256 = "0577366b9567376bc26e815fd74451ebd0e6218814e242f8e5b7072c58d956d2", + strip_prefix = "gix-discover-0.35.0", + urls = ["https://static.crates.io/crates/gix-discover/0.35.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-discover-0.35.0", + srcs = [":gix-discover-0.35.0.crate"], + crate = "gix_discover", + crate_root = "gix-discover-0.35.0.crate/src/lib.rs", + edition = "2021", + platform = { + "windows-gnu": dict( + deps = [":dunce-1.0.5"], + ), + "windows-msvc": dict( + deps = [":dunce-1.0.5"], + ), + }, + visibility = [], + deps = [ + ":bstr-1.10.0", + ":gix-fs-0.11.3", + ":gix-hash-0.14.2", + ":gix-path-0.10.10", + ":gix-ref-0.47.0", + ":gix-sec-0.10.8", + ":thiserror-1.0.64", + ], +) + +http_archive( + name = "gix-features-0.38.2.crate", + sha256 = "ac7045ac9fe5f9c727f38799d002a7ed3583cd777e3322a7c4b43e3cf437dc69", + strip_prefix = "gix-features-0.38.2", + urls = ["https://static.crates.io/crates/gix-features/0.38.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-features-0.38.2", + srcs = [":gix-features-0.38.2.crate"], + crate = "gix_features", + crate_root = "gix-features-0.38.2.crate/src/lib.rs", + edition = "2021", + features = [ + "crc32", + "default", + "fs-read-dir", + "once_cell", + "parallel", + "prodash", + "progress", + "rustsha1", + "walkdir", + "zlib", + ], + platform = { + "linux-arm64": dict( + deps = [":libc-0.2.159"], + ), + "linux-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "macos-arm64": dict( + deps = [":libc-0.2.159"], + ), + "macos-x86_64": dict( + deps = [":libc-0.2.159"], + ), + }, + visibility = [], + deps = [ + ":crc32fast-1.4.2", + ":crossbeam-channel-0.5.13", + ":flate2-1.0.32", + ":gix-hash-0.14.2", + ":gix-trace-0.1.9", + ":gix-utils-0.1.12", + ":once_cell-1.20.2", + ":parking_lot-0.12.3", + ":prodash-28.0.0", + ":sha1_smol-1.0.1", + ":thiserror-1.0.64", + ":walkdir-2.5.0", + ], +) + +alias( + name = "gix-filter", + actual = ":gix-filter-0.13.0", + visibility = ["PUBLIC"], +) + +http_archive( + name = "gix-filter-0.13.0.crate", + sha256 = "4121790ae140066e5b953becc72e7496278138d19239be2e63b5067b0843119e", + strip_prefix = "gix-filter-0.13.0", + urls = ["https://static.crates.io/crates/gix-filter/0.13.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-filter-0.13.0", + srcs = [":gix-filter-0.13.0.crate"], + crate = "gix_filter", + crate_root = "gix-filter-0.13.0.crate/src/lib.rs", + edition = "2021", + named_deps = { + "gix_packetline": ":gix-packetline-blocking-0.17.5", + }, + visibility = [], + deps = [ + ":bstr-1.10.0", + ":encoding_rs-0.8.34", + ":gix-attributes-0.22.5", + ":gix-command-0.3.9", + ":gix-hash-0.14.2", + ":gix-object-0.44.0", + ":gix-path-0.10.10", + ":gix-quote-0.4.12", + ":gix-trace-0.1.9", + ":gix-utils-0.1.12", + ":smallvec-1.13.2", + ":thiserror-1.0.64", + ], +) + +http_archive( + name = "gix-fs-0.11.3.crate", + sha256 = "f2bfe6249cfea6d0c0e0990d5226a4cb36f030444ba9e35e0639275db8f98575", + strip_prefix = "gix-fs-0.11.3", + urls = ["https://static.crates.io/crates/gix-fs/0.11.3/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-fs-0.11.3", + srcs = [":gix-fs-0.11.3.crate"], + crate = "gix_fs", + crate_root = "gix-fs-0.11.3.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":fastrand-2.1.1", + ":gix-features-0.38.2", + ":gix-utils-0.1.12", + ], +) + +http_archive( + name = "gix-glob-0.16.5.crate", + sha256 = "74908b4bbc0a0a40852737e5d7889f676f081e340d5451a16e5b4c50d592f111", + strip_prefix = "gix-glob-0.16.5", + urls = ["https://static.crates.io/crates/gix-glob/0.16.5/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-glob-0.16.5", + srcs = [":gix-glob-0.16.5.crate"], + crate = "gix_glob", + crate_root = "gix-glob-0.16.5.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":bitflags-2.6.0", + ":bstr-1.10.0", + ":gix-features-0.38.2", + ":gix-path-0.10.10", + ], +) + +http_archive( + name = "gix-hash-0.14.2.crate", + sha256 = "f93d7df7366121b5018f947a04d37f034717e113dcf9ccd85c34b58e57a74d5e", + strip_prefix = "gix-hash-0.14.2", + urls = ["https://static.crates.io/crates/gix-hash/0.14.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-hash-0.14.2", + srcs = [":gix-hash-0.14.2.crate"], + crate = "gix_hash", + crate_root = "gix-hash-0.14.2.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":faster-hex-0.9.0", + ":thiserror-1.0.64", + ], +) + +http_archive( + name = "gix-hashtable-0.5.2.crate", + sha256 = "7ddf80e16f3c19ac06ce415a38b8591993d3f73aede049cb561becb5b3a8e242", + strip_prefix = "gix-hashtable-0.5.2", + urls = ["https://static.crates.io/crates/gix-hashtable/0.5.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-hashtable-0.5.2", + srcs = [":gix-hashtable-0.5.2.crate"], + crate = "gix_hashtable", + crate_root = "gix-hashtable-0.5.2.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":gix-hash-0.14.2", + ":hashbrown-0.14.5", + ":parking_lot-0.12.3", + ], +) + +http_archive( + name = "gix-ignore-0.11.4.crate", + sha256 = "e447cd96598460f5906a0f6c75e950a39f98c2705fc755ad2f2020c9e937fab7", + strip_prefix = "gix-ignore-0.11.4", + urls = ["https://static.crates.io/crates/gix-ignore/0.11.4/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-ignore-0.11.4", + srcs = [":gix-ignore-0.11.4.crate"], + crate = "gix_ignore", + crate_root = "gix-ignore-0.11.4.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":bstr-1.10.0", + ":gix-glob-0.16.5", + ":gix-path-0.10.10", + ":gix-trace-0.1.9", + ":unicode-bom-2.0.3", + ], +) + +http_archive( + name = "gix-index-0.35.0.crate", + sha256 = "0cd4203244444017682176e65fd0180be9298e58ed90bd4a8489a357795ed22d", + strip_prefix = "gix-index-0.35.0", + urls = ["https://static.crates.io/crates/gix-index/0.35.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-index-0.35.0", + srcs = [":gix-index-0.35.0.crate"], + crate = "gix_index", + crate_root = "gix-index-0.35.0.crate/src/lib.rs", + edition = "2021", + platform = { + "linux-arm64": dict( + deps = [ + ":libc-0.2.159", + ":rustix-0.38.37", + ], + ), + "linux-x86_64": dict( + deps = [ + ":libc-0.2.159", + ":rustix-0.38.37", + ], + ), + "macos-arm64": dict( + deps = [ + ":libc-0.2.159", + ":rustix-0.38.37", + ], + ), + "macos-x86_64": dict( + deps = [ + ":libc-0.2.159", + ":rustix-0.38.37", + ], + ), + }, + visibility = [], + deps = [ + ":bitflags-2.6.0", + ":bstr-1.10.0", + ":filetime-0.2.24", + ":fnv-1.0.7", + ":gix-bitmap-0.2.11", + ":gix-features-0.38.2", + ":gix-fs-0.11.3", + ":gix-hash-0.14.2", + ":gix-lock-14.0.0", + ":gix-object-0.44.0", + ":gix-traverse-0.41.0", + ":gix-utils-0.1.12", + ":gix-validate-0.9.0", + ":hashbrown-0.14.5", + ":itoa-1.0.11", + ":memmap2-0.9.4", + ":smallvec-1.13.2", + ":thiserror-1.0.64", + ], +) + +http_archive( + name = "gix-lock-14.0.0.crate", + sha256 = "e3bc7fe297f1f4614774989c00ec8b1add59571dc9b024b4c00acb7dedd4e19d", + strip_prefix = "gix-lock-14.0.0", + urls = ["https://static.crates.io/crates/gix-lock/14.0.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-lock-14.0.0", + srcs = [":gix-lock-14.0.0.crate"], + crate = "gix_lock", + crate_root = "gix-lock-14.0.0.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":gix-tempfile-14.0.2", + ":gix-utils-0.1.12", + ":thiserror-1.0.64", + ], +) + +http_archive( + name = "gix-object-0.44.0.crate", + sha256 = "2f5b801834f1de7640731820c2df6ba88d95480dc4ab166a5882f8ff12b88efa", + strip_prefix = "gix-object-0.44.0", + urls = ["https://static.crates.io/crates/gix-object/0.44.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-object-0.44.0", + srcs = [":gix-object-0.44.0.crate"], + crate = "gix_object", + crate_root = "gix-object-0.44.0.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":bstr-1.10.0", + ":gix-actor-0.32.0", + ":gix-date-0.9.0", + ":gix-features-0.38.2", + ":gix-hash-0.14.2", + ":gix-utils-0.1.12", + ":gix-validate-0.9.0", + ":itoa-1.0.11", + ":smallvec-1.13.2", + ":thiserror-1.0.64", + ":winnow-0.6.18", + ], +) + +http_archive( + name = "gix-odb-0.63.0.crate", + sha256 = "a3158068701c17df54f0ab2adda527f5a6aca38fd5fd80ceb7e3c0a2717ec747", + strip_prefix = "gix-odb-0.63.0", + urls = ["https://static.crates.io/crates/gix-odb/0.63.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-odb-0.63.0", + srcs = [":gix-odb-0.63.0.crate"], + crate = "gix_odb", + crate_root = "gix-odb-0.63.0.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":arc-swap-1.7.1", + ":gix-date-0.9.0", + ":gix-features-0.38.2", + ":gix-fs-0.11.3", + ":gix-hash-0.14.2", + ":gix-object-0.44.0", + ":gix-pack-0.53.0", + ":gix-path-0.10.10", + ":gix-quote-0.4.12", + ":parking_lot-0.12.3", + ":tempfile-3.13.0", + ":thiserror-1.0.64", + ], +) + +http_archive( + name = "gix-pack-0.53.0.crate", + sha256 = "3223aa342eee21e1e0e403cad8ae9caf9edca55ef84c347738d10681676fd954", + strip_prefix = "gix-pack-0.53.0", + urls = ["https://static.crates.io/crates/gix-pack/0.53.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-pack-0.53.0", + srcs = [":gix-pack-0.53.0.crate"], + crate = "gix_pack", + crate_root = "gix-pack-0.53.0.crate/src/lib.rs", + edition = "2021", + features = [ + "object-cache-dynamic", + "pack-cache-lru-dynamic", + "pack-cache-lru-static", + ], + visibility = [], + deps = [ + ":clru-0.6.2", + ":gix-chunk-0.4.8", + ":gix-features-0.38.2", + ":gix-hash-0.14.2", + ":gix-hashtable-0.5.2", + ":gix-object-0.44.0", + ":gix-path-0.10.10", + ":memmap2-0.9.4", + ":smallvec-1.13.2", + ":thiserror-1.0.64", + ":uluru-3.1.0", + ], +) + +http_archive( + name = "gix-packetline-blocking-0.17.5.crate", + sha256 = "b9802304baa798dd6f5ff8008a2b6516d54b74a69ca2d3a2b9e2d6c3b5556b40", + strip_prefix = "gix-packetline-blocking-0.17.5", + urls = ["https://static.crates.io/crates/gix-packetline-blocking/0.17.5/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-packetline-blocking-0.17.5", + srcs = [":gix-packetline-blocking-0.17.5.crate"], + crate = "gix_packetline_blocking", + crate_root = "gix-packetline-blocking-0.17.5.crate/src/lib.rs", + edition = "2021", + features = [ + "blocking-io", + "default", + ], + visibility = [], + deps = [ + ":bstr-1.10.0", + ":faster-hex-0.9.0", + ":gix-trace-0.1.9", + ":thiserror-1.0.64", + ], +) + +http_archive( + name = "gix-path-0.10.10.crate", + sha256 = "38d5b8722112fa2fa87135298780bc833b0e9f6c56cc82795d209804b3a03484", + strip_prefix = "gix-path-0.10.10", + urls = ["https://static.crates.io/crates/gix-path/0.10.10/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-path-0.10.10", + srcs = [":gix-path-0.10.10.crate"], + crate = "gix_path", + crate_root = "gix-path-0.10.10.crate/src/lib.rs", + edition = "2021", + platform = { + "linux-arm64": dict( + deps = [":home-0.5.9"], + ), + "linux-x86_64": dict( + deps = [":home-0.5.9"], + ), + "macos-arm64": dict( + deps = [":home-0.5.9"], + ), + "macos-x86_64": dict( + deps = [":home-0.5.9"], + ), + "windows-gnu": dict( + deps = [":home-0.5.9"], + ), + "windows-msvc": dict( + deps = [":home-0.5.9"], + ), + }, + visibility = [], + deps = [ + ":bstr-1.10.0", + ":gix-trace-0.1.9", + ":once_cell-1.20.2", + ":thiserror-1.0.64", + ], +) + +http_archive( + name = "gix-pathspec-0.7.7.crate", + sha256 = "5d23bf239532b4414d0e63b8ab3a65481881f7237ed9647bb10c1e3cc54c5ceb", + strip_prefix = "gix-pathspec-0.7.7", + urls = ["https://static.crates.io/crates/gix-pathspec/0.7.7/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-pathspec-0.7.7", + srcs = [":gix-pathspec-0.7.7.crate"], + crate = "gix_pathspec", + crate_root = "gix-pathspec-0.7.7.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":bitflags-2.6.0", + ":bstr-1.10.0", + ":gix-attributes-0.22.5", + ":gix-config-value-0.14.8", + ":gix-glob-0.16.5", + ":gix-path-0.10.10", + ":thiserror-1.0.64", + ], +) + +http_archive( + name = "gix-quote-0.4.12.crate", + sha256 = "cbff4f9b9ea3fa7a25a70ee62f545143abef624ac6aa5884344e70c8b0a1d9ff", + strip_prefix = "gix-quote-0.4.12", + urls = ["https://static.crates.io/crates/gix-quote/0.4.12/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-quote-0.4.12", + srcs = [":gix-quote-0.4.12.crate"], + crate = "gix_quote", + crate_root = "gix-quote-0.4.12.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":bstr-1.10.0", + ":gix-utils-0.1.12", + ":thiserror-1.0.64", + ], +) + +http_archive( + name = "gix-ref-0.47.0.crate", + sha256 = "ae0d8406ebf9aaa91f55a57f053c5a1ad1a39f60fdf0303142b7be7ea44311e5", + strip_prefix = "gix-ref-0.47.0", + urls = ["https://static.crates.io/crates/gix-ref/0.47.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-ref-0.47.0", + srcs = [":gix-ref-0.47.0.crate"], + crate = "gix_ref", + crate_root = "gix-ref-0.47.0.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":gix-actor-0.32.0", + ":gix-features-0.38.2", + ":gix-fs-0.11.3", + ":gix-hash-0.14.2", + ":gix-lock-14.0.0", + ":gix-object-0.44.0", + ":gix-path-0.10.10", + ":gix-tempfile-14.0.2", + ":gix-utils-0.1.12", + ":gix-validate-0.9.0", + ":memmap2-0.9.4", + ":thiserror-1.0.64", + ":winnow-0.6.18", + ], +) + +http_archive( + name = "gix-refspec-0.25.0.crate", + sha256 = "ebb005f82341ba67615ffdd9f7742c87787544441c88090878393d0682869ca6", + strip_prefix = "gix-refspec-0.25.0", + urls = ["https://static.crates.io/crates/gix-refspec/0.25.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-refspec-0.25.0", + srcs = [":gix-refspec-0.25.0.crate"], + crate = "gix_refspec", + crate_root = "gix-refspec-0.25.0.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":bstr-1.10.0", + ":gix-hash-0.14.2", + ":gix-revision-0.29.0", + ":gix-validate-0.9.0", + ":smallvec-1.13.2", + ":thiserror-1.0.64", + ], +) + +http_archive( + name = "gix-revision-0.29.0.crate", + sha256 = "ba4621b219ac0cdb9256883030c3d56a6c64a6deaa829a92da73b9a576825e1e", + strip_prefix = "gix-revision-0.29.0", + urls = ["https://static.crates.io/crates/gix-revision/0.29.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-revision-0.29.0", + srcs = [":gix-revision-0.29.0.crate"], + crate = "gix_revision", + crate_root = "gix-revision-0.29.0.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":bstr-1.10.0", + ":gix-date-0.9.0", + ":gix-hash-0.14.2", + ":gix-object-0.44.0", + ":gix-revwalk-0.15.0", + ":thiserror-1.0.64", + ], +) + +http_archive( + name = "gix-revwalk-0.15.0.crate", + sha256 = "b41e72544b93084ee682ef3d5b31b1ba4d8fa27a017482900e5e044d5b1b3984", + strip_prefix = "gix-revwalk-0.15.0", + urls = ["https://static.crates.io/crates/gix-revwalk/0.15.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-revwalk-0.15.0", + srcs = [":gix-revwalk-0.15.0.crate"], + crate = "gix_revwalk", + crate_root = "gix-revwalk-0.15.0.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":gix-commitgraph-0.24.3", + ":gix-date-0.9.0", + ":gix-hash-0.14.2", + ":gix-hashtable-0.5.2", + ":gix-object-0.44.0", + ":smallvec-1.13.2", + ":thiserror-1.0.64", + ], +) + +http_archive( + name = "gix-sec-0.10.8.crate", + sha256 = "0fe4d52f30a737bbece5276fab5d3a8b276dc2650df963e293d0673be34e7a5f", + strip_prefix = "gix-sec-0.10.8", + urls = ["https://static.crates.io/crates/gix-sec/0.10.8/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-sec-0.10.8", + srcs = [":gix-sec-0.10.8.crate"], + crate = "gix_sec", + crate_root = "gix-sec-0.10.8.crate/src/lib.rs", + edition = "2021", + platform = { + "linux-arm64": dict( + deps = [":libc-0.2.159"], + ), + "linux-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "macos-arm64": dict( + deps = [":libc-0.2.159"], + ), + "macos-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "windows-gnu": dict( + deps = [ + ":gix-path-0.10.10", + ":windows-sys-0.52.0", + ], + ), + "windows-msvc": dict( + deps = [ + ":gix-path-0.10.10", + ":windows-sys-0.52.0", + ], + ), + }, + visibility = [], + deps = [":bitflags-2.6.0"], +) + +http_archive( + name = "gix-submodule-0.14.0.crate", + sha256 = "529d0af78cc2f372b3218f15eb1e3d1635a21c8937c12e2dd0b6fc80c2ca874b", + strip_prefix = "gix-submodule-0.14.0", + urls = ["https://static.crates.io/crates/gix-submodule/0.14.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-submodule-0.14.0", + srcs = [":gix-submodule-0.14.0.crate"], + crate = "gix_submodule", + crate_root = "gix-submodule-0.14.0.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":bstr-1.10.0", + ":gix-config-0.40.0", + ":gix-path-0.10.10", + ":gix-pathspec-0.7.7", + ":gix-refspec-0.25.0", + ":gix-url-0.27.5", + ":thiserror-1.0.64", + ], +) + +http_archive( + name = "gix-tempfile-14.0.2.crate", + sha256 = "046b4927969fa816a150a0cda2e62c80016fe11fb3c3184e4dddf4e542f108aa", + strip_prefix = "gix-tempfile-14.0.2", + urls = ["https://static.crates.io/crates/gix-tempfile/14.0.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-tempfile-14.0.2", + srcs = [":gix-tempfile-14.0.2.crate"], + crate = "gix_tempfile", + crate_root = "gix-tempfile-14.0.2.crate/src/lib.rs", + edition = "2021", + features = [ + "default", + "hp-hashmap", + ], + platform = { + "linux-arm64": dict( + deps = [":libc-0.2.159"], + ), + "linux-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "macos-arm64": dict( + deps = [":libc-0.2.159"], + ), + "macos-x86_64": dict( + deps = [":libc-0.2.159"], + ), + }, + visibility = [], + deps = [ + ":dashmap-6.0.1", + ":gix-fs-0.11.3", + ":once_cell-1.20.2", + ":parking_lot-0.12.3", + ":tempfile-3.13.0", + ], +) + +http_archive( + name = "gix-trace-0.1.9.crate", + sha256 = "f924267408915fddcd558e3f37295cc7d6a3e50f8bd8b606cee0808c3915157e", + strip_prefix = "gix-trace-0.1.9", + urls = ["https://static.crates.io/crates/gix-trace/0.1.9/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-trace-0.1.9", + srcs = [":gix-trace-0.1.9.crate"], + crate = "gix_trace", + crate_root = "gix-trace-0.1.9.crate/src/lib.rs", + edition = "2021", + features = ["default"], + visibility = [], +) + +http_archive( + name = "gix-traverse-0.41.0.crate", + sha256 = "030da39af94e4df35472e9318228f36530989327906f38e27807df305fccb780", + strip_prefix = "gix-traverse-0.41.0", + urls = ["https://static.crates.io/crates/gix-traverse/0.41.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-traverse-0.41.0", + srcs = [":gix-traverse-0.41.0.crate"], + crate = "gix_traverse", + crate_root = "gix-traverse-0.41.0.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":bitflags-2.6.0", + ":gix-commitgraph-0.24.3", + ":gix-date-0.9.0", + ":gix-hash-0.14.2", + ":gix-hashtable-0.5.2", + ":gix-object-0.44.0", + ":gix-revwalk-0.15.0", + ":smallvec-1.13.2", + ":thiserror-1.0.64", + ], +) + +http_archive( + name = "gix-url-0.27.5.crate", + sha256 = "fd280c5e84fb22e128ed2a053a0daeacb6379469be6a85e3d518a0636e160c89", + strip_prefix = "gix-url-0.27.5", + urls = ["https://static.crates.io/crates/gix-url/0.27.5/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-url-0.27.5", + srcs = [":gix-url-0.27.5.crate"], + crate = "gix_url", + crate_root = "gix-url-0.27.5.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":bstr-1.10.0", + ":gix-features-0.38.2", + ":gix-path-0.10.10", + ":home-0.5.9", + ":thiserror-1.0.64", + ":url-2.5.2", + ], +) + +http_archive( + name = "gix-utils-0.1.12.crate", + sha256 = "35192df7fd0fa112263bad8021e2df7167df4cc2a6e6d15892e1e55621d3d4dc", + strip_prefix = "gix-utils-0.1.12", + urls = ["https://static.crates.io/crates/gix-utils/0.1.12/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-utils-0.1.12", + srcs = [":gix-utils-0.1.12.crate"], + crate = "gix_utils", + crate_root = "gix-utils-0.1.12.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":fastrand-2.1.1", + ":unicode-normalization-0.1.23", + ], +) + +http_archive( + name = "gix-validate-0.9.0.crate", + sha256 = "81f2badbb64e57b404593ee26b752c26991910fd0d81fe6f9a71c1a8309b6c86", + strip_prefix = "gix-validate-0.9.0", + urls = ["https://static.crates.io/crates/gix-validate/0.9.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-validate-0.9.0", + srcs = [":gix-validate-0.9.0.crate"], + crate = "gix_validate", + crate_root = "gix-validate-0.9.0.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":bstr-1.10.0", + ":thiserror-1.0.64", + ], +) + +http_archive( + name = "gix-worktree-0.36.0.crate", + sha256 = "c312ad76a3f2ba8e865b360d5cb3aa04660971d16dec6dd0ce717938d903149a", + strip_prefix = "gix-worktree-0.36.0", + urls = ["https://static.crates.io/crates/gix-worktree/0.36.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "gix-worktree-0.36.0", + srcs = [":gix-worktree-0.36.0.crate"], + crate = "gix_worktree", + crate_root = "gix-worktree-0.36.0.crate/src/lib.rs", + edition = "2021", + features = ["attributes"], + visibility = [], + deps = [ + ":bstr-1.10.0", + ":gix-attributes-0.22.5", + ":gix-features-0.38.2", + ":gix-fs-0.11.3", + ":gix-glob-0.16.5", + ":gix-hash-0.14.2", + ":gix-ignore-0.11.4", + ":gix-index-0.35.0", + ":gix-object-0.44.0", + ":gix-path-0.10.10", + ":gix-validate-0.9.0", + ], +) + +alias( + name = "glob", + actual = ":glob-0.3.1", + visibility = ["PUBLIC"], +) + +http_archive( + name = "glob-0.3.1.crate", + sha256 = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b", + strip_prefix = "glob-0.3.1", + urls = ["https://static.crates.io/crates/glob/0.3.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "glob-0.3.1", + srcs = [":glob-0.3.1.crate"], + crate = "glob", + crate_root = "glob-0.3.1.crate/src/lib.rs", + edition = "2015", + visibility = [], +) + +http_archive( + name = "globset-0.4.15.crate", + sha256 = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19", + strip_prefix = "globset-0.4.15", + urls = ["https://static.crates.io/crates/globset/0.4.15/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "globset-0.4.15", + srcs = [":globset-0.4.15.crate"], + crate = "globset", + crate_root = "globset-0.4.15.crate/src/lib.rs", + edition = "2021", + features = [ + "default", + "log", + ], + visibility = [], + deps = [ + ":aho-corasick-1.1.3", + ":bstr-1.10.0", + ":log-0.4.22", + ":regex-automata-0.4.8", + ":regex-syntax-0.8.5", + ], +) + +http_archive( + name = "half-2.4.1.crate", + sha256 = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888", + strip_prefix = "half-2.4.1", + urls = ["https://static.crates.io/crates/half/2.4.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "half-2.4.1", + srcs = [":half-2.4.1.crate"], + crate = "half", + crate_root = "half-2.4.1.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [":cfg-if-1.0.0"], +) + +http_archive( + name = "hashbrown-0.14.5.crate", + sha256 = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1", + strip_prefix = "hashbrown-0.14.5", + urls = ["https://static.crates.io/crates/hashbrown/0.14.5/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "hashbrown-0.14.5", + srcs = [":hashbrown-0.14.5.crate"], + crate = "hashbrown", + crate_root = "hashbrown-0.14.5.crate/src/lib.rs", + edition = "2021", + features = [ + "ahash", + "allocator-api2", + "default", + "inline-more", + "raw", + ], + visibility = [], + deps = [ + ":ahash-0.8.11", + ":allocator-api2-0.2.18", + ], +) + +alias( + name = "hashbrown", + actual = ":hashbrown-0.15.0", + visibility = ["PUBLIC"], +) + +http_archive( + name = "hashbrown-0.15.0.crate", + sha256 = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb", + strip_prefix = "hashbrown-0.15.0", + urls = ["https://static.crates.io/crates/hashbrown/0.15.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "hashbrown-0.15.0", + srcs = [":hashbrown-0.15.0.crate"], + crate = "hashbrown", + crate_root = "hashbrown-0.15.0.crate/src/lib.rs", + edition = "2021", + features = ["inline-more"], + visibility = [], +) + +http_archive( + name = "heck-0.5.0.crate", + sha256 = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea", + strip_prefix = "heck-0.5.0", + urls = ["https://static.crates.io/crates/heck/0.5.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "heck-0.5.0", + srcs = [":heck-0.5.0.crate"], + crate = "heck", + crate_root = "heck-0.5.0.crate/src/lib.rs", + edition = "2021", + visibility = [], +) + +alias( + name = "hex", + actual = ":hex-0.4.3", + visibility = ["PUBLIC"], +) + +http_archive( + name = "hex-0.4.3.crate", + sha256 = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70", + strip_prefix = "hex-0.4.3", + urls = ["https://static.crates.io/crates/hex/0.4.3/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "hex-0.4.3", + srcs = [":hex-0.4.3.crate"], + crate = "hex", + crate_root = "hex-0.4.3.crate/src/lib.rs", + edition = "2018", + features = [ + "alloc", + "default", + "std", + ], + visibility = [], +) + +http_archive( + name = "home-0.5.9.crate", + sha256 = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5", + strip_prefix = "home-0.5.9", + urls = ["https://static.crates.io/crates/home/0.5.9/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "home-0.5.9", + srcs = [":home-0.5.9.crate"], + crate = "home", + crate_root = "home-0.5.9.crate/src/lib.rs", + edition = "2021", + platform = { + "windows-gnu": dict( + deps = [":windows-sys-0.52.0"], + ), + "windows-msvc": dict( + deps = [":windows-sys-0.52.0"], + ), + }, + visibility = [], +) + +http_archive( + name = "iana-time-zone-0.1.60.crate", + sha256 = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141", + strip_prefix = "iana-time-zone-0.1.60", + urls = ["https://static.crates.io/crates/iana-time-zone/0.1.60/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "iana-time-zone-0.1.60", + srcs = [":iana-time-zone-0.1.60.crate"], + crate = "iana_time_zone", + crate_root = "iana-time-zone-0.1.60.crate/src/lib.rs", + edition = "2018", + features = ["fallback"], + platform = { + "macos-arm64": dict( + deps = [":core-foundation-sys-0.8.7"], + ), + "macos-x86_64": dict( + deps = [":core-foundation-sys-0.8.7"], + ), + "windows-gnu": dict( + deps = [":windows-core-0.52.0"], + ), + "windows-msvc": dict( + deps = [":windows-core-0.52.0"], + ), + }, + visibility = [], +) + +http_archive( + name = "idna-0.5.0.crate", + sha256 = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6", + strip_prefix = "idna-0.5.0", + urls = ["https://static.crates.io/crates/idna/0.5.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "idna-0.5.0", + srcs = [":idna-0.5.0.crate"], + crate = "idna", + crate_root = "idna-0.5.0.crate/src/lib.rs", + edition = "2018", + features = [ + "alloc", + "default", + "std", + ], + visibility = [], + deps = [ + ":unicode-bidi-0.3.15", + ":unicode-normalization-0.1.23", + ], +) + +alias( + name = "ignore", + actual = ":ignore-0.4.23", + visibility = ["PUBLIC"], +) + +http_archive( + name = "ignore-0.4.23.crate", + sha256 = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b", + strip_prefix = "ignore-0.4.23", + urls = ["https://static.crates.io/crates/ignore/0.4.23/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "ignore-0.4.23", + srcs = [":ignore-0.4.23.crate"], + crate = "ignore", + crate_root = "ignore-0.4.23.crate/src/lib.rs", + edition = "2021", + platform = { + "windows-gnu": dict( + deps = [":winapi-util-0.1.9"], + ), + "windows-msvc": dict( + deps = [":winapi-util-0.1.9"], + ), + }, + visibility = [], + deps = [ + ":crossbeam-deque-0.8.5", + ":globset-0.4.15", + ":log-0.4.22", + ":memchr-2.7.4", + ":regex-automata-0.4.8", + ":same-file-1.0.6", + ":walkdir-2.5.0", + ], +) + +http_archive( + name = "imara-diff-0.1.7.crate", + sha256 = "fc9da1a252bd44cd341657203722352efc9bc0c847d06ea6d2dc1cd1135e0a01", + strip_prefix = "imara-diff-0.1.7", + urls = ["https://static.crates.io/crates/imara-diff/0.1.7/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "imara-diff-0.1.7", + srcs = [":imara-diff-0.1.7.crate"], + crate = "imara_diff", + crate_root = "imara-diff-0.1.7.crate/src/lib.rs", + edition = "2021", + features = [ + "default", + "unified_diff", + ], + visibility = [], + deps = [ + ":ahash-0.8.11", + ":hashbrown-0.14.5", + ], +) + +alias( + name = "indexmap", + actual = ":indexmap-2.6.0", + visibility = ["PUBLIC"], +) + +http_archive( + name = "indexmap-2.6.0.crate", + sha256 = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da", + strip_prefix = "indexmap-2.6.0", + urls = ["https://static.crates.io/crates/indexmap/2.6.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "indexmap-2.6.0", + srcs = [":indexmap-2.6.0.crate"], + crate = "indexmap", + crate_root = "indexmap-2.6.0.crate/src/lib.rs", + edition = "2021", + features = [ + "default", + "std", + ], + rustc_flags = ["--cfg=has_std"], + visibility = [], + deps = [ + ":equivalent-1.0.1", + ":hashbrown-0.15.0", + ], +) + +alias( + name = "indoc", + actual = ":indoc-2.0.5", + visibility = ["PUBLIC"], +) + +http_archive( + name = "indoc-2.0.5.crate", + sha256 = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5", + strip_prefix = "indoc-2.0.5", + urls = ["https://static.crates.io/crates/indoc/2.0.5/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "indoc-2.0.5", + srcs = [":indoc-2.0.5.crate"], + crate = "indoc", + crate_root = "indoc-2.0.5.crate/src/lib.rs", + edition = "2021", + proc_macro = True, + visibility = [], +) + +alias( + name = "insta", + actual = ":insta-1.40.0", + visibility = ["PUBLIC"], +) + +http_archive( + name = "insta-1.40.0.crate", + sha256 = "6593a41c7a73841868772495db7dc1e8ecab43bb5c0b6da2059246c4b506ab60", + strip_prefix = "insta-1.40.0", + urls = ["https://static.crates.io/crates/insta/1.40.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "insta-1.40.0", + srcs = [":insta-1.40.0.crate"], + crate = "insta", + crate_root = "insta-1.40.0.crate/src/lib.rs", + edition = "2021", + features = [ + "colors", + "console", + "default", + "filters", + "regex", + ], + visibility = [], + deps = [ + ":console-0.15.8", + ":lazy_static-1.5.0", + ":linked-hash-map-0.5.6", + ":regex-1.11.0", + ":similar-2.6.0", + ], +) + +http_archive( + name = "instant-0.1.13.crate", + sha256 = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222", + strip_prefix = "instant-0.1.13", + urls = ["https://static.crates.io/crates/instant/0.1.13/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "instant-0.1.13", + srcs = [":instant-0.1.13.crate"], + crate = "instant", + crate_root = "instant-0.1.13.crate/src/lib.rs", + edition = "2018", + visibility = [], + deps = [":cfg-if-1.0.0"], +) + +http_archive( + name = "is-terminal-0.4.13.crate", + sha256 = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b", + strip_prefix = "is-terminal-0.4.13", + urls = ["https://static.crates.io/crates/is-terminal/0.4.13/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "is-terminal-0.4.13", + srcs = [":is-terminal-0.4.13.crate"], + crate = "is_terminal", + crate_root = "is-terminal-0.4.13.crate/src/lib.rs", + edition = "2018", + platform = { + "linux-arm64": dict( + deps = [":libc-0.2.159"], + ), + "linux-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "macos-arm64": dict( + deps = [":libc-0.2.159"], + ), + "macos-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "windows-gnu": dict( + deps = [":windows-sys-0.52.0"], + ), + "windows-msvc": dict( + deps = [":windows-sys-0.52.0"], + ), + }, + visibility = [], +) + +http_archive( + name = "is_terminal_polyfill-1.70.1.crate", + sha256 = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf", + strip_prefix = "is_terminal_polyfill-1.70.1", + urls = ["https://static.crates.io/crates/is_terminal_polyfill/1.70.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "is_terminal_polyfill-1.70.1", + srcs = [":is_terminal_polyfill-1.70.1.crate"], + crate = "is_terminal_polyfill", + crate_root = "is_terminal_polyfill-1.70.1.crate/src/lib.rs", + edition = "2021", + features = ["default"], + visibility = [], +) + +http_archive( + name = "itertools-0.10.5.crate", + sha256 = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473", + strip_prefix = "itertools-0.10.5", + urls = ["https://static.crates.io/crates/itertools/0.10.5/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "itertools-0.10.5", + srcs = [":itertools-0.10.5.crate"], + crate = "itertools", + crate_root = "itertools-0.10.5.crate/src/lib.rs", + edition = "2018", + features = [ + "default", + "use_alloc", + "use_std", + ], + visibility = [], + deps = [":either-1.13.0"], +) + +http_archive( + name = "itertools-0.12.1.crate", + sha256 = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569", + strip_prefix = "itertools-0.12.1", + urls = ["https://static.crates.io/crates/itertools/0.12.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "itertools-0.12.1", + srcs = [":itertools-0.12.1.crate"], + crate = "itertools", + crate_root = "itertools-0.12.1.crate/src/lib.rs", + edition = "2018", + features = [ + "default", + "use_alloc", + "use_std", + ], + visibility = [], + deps = [":either-1.13.0"], +) + +alias( + name = "itertools", + actual = ":itertools-0.13.0", + visibility = ["PUBLIC"], +) + +http_archive( + name = "itertools-0.13.0.crate", + sha256 = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186", + strip_prefix = "itertools-0.13.0", + urls = ["https://static.crates.io/crates/itertools/0.13.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "itertools-0.13.0", + srcs = [":itertools-0.13.0.crate"], + crate = "itertools", + crate_root = "itertools-0.13.0.crate/src/lib.rs", + edition = "2018", + features = [ + "default", + "use_alloc", + "use_std", + ], + visibility = [], + deps = [":either-1.13.0"], +) + +http_archive( + name = "itoa-1.0.11.crate", + sha256 = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b", + strip_prefix = "itoa-1.0.11", + urls = ["https://static.crates.io/crates/itoa/1.0.11/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "itoa-1.0.11", + srcs = [":itoa-1.0.11.crate"], + crate = "itoa", + crate_root = "itoa-1.0.11.crate/src/lib.rs", + edition = "2018", + visibility = [], +) + +http_archive( + name = "jiff-0.1.8.crate", + sha256 = "db2b7379a75544c94b3da32821b0bf41f9062e9970e23b78cc577d0d89676d16", + strip_prefix = "jiff-0.1.8", + urls = ["https://static.crates.io/crates/jiff/0.1.8/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "jiff-0.1.8", + srcs = [":jiff-0.1.8.crate"], + crate = "jiff", + crate_root = "jiff-0.1.8.crate/src/lib.rs", + edition = "2021", + features = [ + "alloc", + "default", + "std", + "tz-system", + "tzdb-bundle-platform", + "tzdb-zoneinfo", + ], + platform = { + "windows-gnu": dict( + deps = [ + ":jiff-tzdb-platform-0.1.0", + ":windows-sys-0.59.0", + ], + ), + "windows-msvc": dict( + deps = [ + ":jiff-tzdb-platform-0.1.0", + ":windows-sys-0.59.0", + ], + ), + }, + visibility = [], +) + +http_archive( + name = "jiff-tzdb-0.1.0.crate", + sha256 = "05fac328b3df1c0f18a3c2ab6cb7e06e4e549f366017d796e3e66b6d6889abe6", + strip_prefix = "jiff-tzdb-0.1.0", + urls = ["https://static.crates.io/crates/jiff-tzdb/0.1.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "jiff-tzdb-0.1.0", + srcs = [":jiff-tzdb-0.1.0.crate"], + crate = "jiff_tzdb", + crate_root = "jiff-tzdb-0.1.0.crate/lib.rs", + edition = "2021", + visibility = [], +) + +http_archive( + name = "jiff-tzdb-platform-0.1.0.crate", + sha256 = "f8da387d5feaf355954c2c122c194d6df9c57d865125a67984bb453db5336940", + strip_prefix = "jiff-tzdb-platform-0.1.0", + urls = ["https://static.crates.io/crates/jiff-tzdb-platform/0.1.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "jiff-tzdb-platform-0.1.0", + srcs = [":jiff-tzdb-platform-0.1.0.crate"], + crate = "jiff_tzdb_platform", + crate_root = "jiff-tzdb-platform-0.1.0.crate/lib.rs", + edition = "2021", + visibility = [], + deps = [":jiff-tzdb-0.1.0"], +) + +http_archive( + name = "kstring-2.0.2.crate", + sha256 = "558bf9508a558512042d3095138b1f7b8fe90c5467d94f9f1da28b3731c5dbd1", + strip_prefix = "kstring-2.0.2", + urls = ["https://static.crates.io/crates/kstring/2.0.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "kstring-2.0.2", + srcs = [":kstring-2.0.2.crate"], + crate = "kstring", + crate_root = "kstring-2.0.2.crate/src/lib.rs", + edition = "2021", + features = [ + "default", + "std", + "unsafe", + ], + visibility = [], + deps = [":static_assertions-1.1.0"], +) + +http_archive( + name = "lazy_static-1.5.0.crate", + sha256 = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe", + strip_prefix = "lazy_static-1.5.0", + urls = ["https://static.crates.io/crates/lazy_static/1.5.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "lazy_static-1.5.0", + srcs = [":lazy_static-1.5.0.crate"], + crate = "lazy_static", + crate_root = "lazy_static-1.5.0.crate/src/lib.rs", + edition = "2015", + visibility = [], +) + +alias( + name = "libc", + actual = ":libc-0.2.159", + visibility = ["PUBLIC"], +) + +http_archive( + name = "libc-0.2.159.crate", + sha256 = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5", + strip_prefix = "libc-0.2.159", + urls = ["https://static.crates.io/crates/libc/0.2.159/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "libc-0.2.159", + srcs = [":libc-0.2.159.crate"], + crate = "libc", + crate_root = "libc-0.2.159.crate/src/lib.rs", + edition = "2015", + features = [ + "default", + "extra_traits", + "std", + ], + rustc_flags = ["@$(location :libc-0.2.159-build-script-run[rustc_flags])"], + visibility = [], +) + +third_party_rust.rust_binary( + name = "libc-0.2.159-build-script-build", + srcs = [":libc-0.2.159.crate"], + crate = "build_script_build", + crate_root = "libc-0.2.159.crate/build.rs", + edition = "2015", + features = [ + "default", + "extra_traits", + "std", + ], + visibility = [], +) + +third_party_rust.buildscript_run( + name = "libc-0.2.159-build-script-run", + package_name = "libc", + buildscript_rule = ":libc-0.2.159-build-script-build", + features = [ + "default", + "extra_traits", + "std", + ], + version = "0.2.159", +) + +http_archive( + name = "libgit2-sys-0.17.0+1.8.1.crate", + sha256 = "10472326a8a6477c3c20a64547b0059e4b0d086869eee31e6d7da728a8eb7224", + strip_prefix = "libgit2-sys-0.17.0+1.8.1", + urls = ["https://static.crates.io/crates/libgit2-sys/0.17.0+1.8.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "libgit2-sys-0.17.0+1.8.1", + srcs = [":libgit2-sys-0.17.0+1.8.1.crate"], + crate = "libgit2_sys", + crate_root = "libgit2-sys-0.17.0+1.8.1.crate/lib.rs", + edition = "2018", + features = [ + "https", + "libssh2-sys", + "openssl-sys", + "ssh", + "ssh_key_from_memory", + "vendored", + ], + platform = { + "linux-arm64": dict( + deps = [":openssl-sys-0.9.103"], + ), + "linux-x86_64": dict( + deps = [":openssl-sys-0.9.103"], + ), + "macos-arm64": dict( + deps = [":openssl-sys-0.9.103"], + ), + "macos-x86_64": dict( + deps = [":openssl-sys-0.9.103"], + ), + }, + visibility = [], + deps = [ + "third-party//libgit2:libgit2", + ":libc-0.2.159", + ":libssh2-sys-0.3.0", + ":libz-sys-1.1.19", + ], +) + +http_archive( + name = "libssh2-sys-0.3.0.crate", + sha256 = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee", + strip_prefix = "libssh2-sys-0.3.0", + urls = ["https://static.crates.io/crates/libssh2-sys/0.3.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "libssh2-sys-0.3.0", + srcs = [":libssh2-sys-0.3.0.crate"], + crate = "libssh2_sys", + crate_root = "libssh2-sys-0.3.0.crate/lib.rs", + edition = "2015", + platform = { + "linux-arm64": dict( + deps = [":openssl-sys-0.9.103"], + ), + "linux-x86_64": dict( + deps = [":openssl-sys-0.9.103"], + ), + "macos-arm64": dict( + deps = [":openssl-sys-0.9.103"], + ), + "macos-x86_64": dict( + deps = [":openssl-sys-0.9.103"], + ), + }, + visibility = [], + deps = [ + "third-party//libssh2:libssh2", + ":libc-0.2.159", + ":libz-sys-1.1.19", + ], +) + +http_archive( + name = "libz-sys-1.1.19.crate", + sha256 = "fdc53a7799a7496ebc9fd29f31f7df80e83c9bda5299768af5f9e59eeea74647", + strip_prefix = "libz-sys-1.1.19", + urls = ["https://static.crates.io/crates/libz-sys/1.1.19/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "libz-sys-1.1.19", + srcs = [":libz-sys-1.1.19.crate"], + crate = "libz_sys", + crate_root = "libz-sys-1.1.19.crate/src/lib.rs", + edition = "2018", + features = [ + "libc", + "stock-zlib", + ], + visibility = [], + deps = [ + "third-party//libz:libz", + ":libc-0.2.159", + ], +) + +http_archive( + name = "linked-hash-map-0.5.6.crate", + sha256 = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f", + strip_prefix = "linked-hash-map-0.5.6", + urls = ["https://static.crates.io/crates/linked-hash-map/0.5.6/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "linked-hash-map-0.5.6", + srcs = [":linked-hash-map-0.5.6.crate"], + crate = "linked_hash_map", + crate_root = "linked-hash-map-0.5.6.crate/src/lib.rs", + edition = "2015", + visibility = [], +) + +http_archive( + name = "linux-raw-sys-0.4.14.crate", + sha256 = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89", + strip_prefix = "linux-raw-sys-0.4.14", + urls = ["https://static.crates.io/crates/linux-raw-sys/0.4.14/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "linux-raw-sys-0.4.14", + srcs = [":linux-raw-sys-0.4.14.crate"], + crate = "linux_raw_sys", + crate_root = "linux-raw-sys-0.4.14.crate/src/lib.rs", + edition = "2021", + features = [ + "elf", + "errno", + "general", + "ioctl", + "no_std", + ], + visibility = [], +) + +http_archive( + name = "lock_api-0.4.12.crate", + sha256 = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17", + strip_prefix = "lock_api-0.4.12", + urls = ["https://static.crates.io/crates/lock_api/0.4.12/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "lock_api-0.4.12", + srcs = [":lock_api-0.4.12.crate"], + crate = "lock_api", + crate_root = "lock_api-0.4.12.crate/src/lib.rs", + edition = "2021", + features = [ + "atomic_usize", + "default", + ], + rustc_flags = ["@$(location :lock_api-0.4.12-build-script-run[rustc_flags])"], + visibility = [], + deps = [":scopeguard-1.2.0"], +) + +third_party_rust.rust_binary( + name = "lock_api-0.4.12-build-script-build", + srcs = [":lock_api-0.4.12.crate"], + crate = "build_script_build", + crate_root = "lock_api-0.4.12.crate/build.rs", + edition = "2021", + features = [ + "atomic_usize", + "default", + ], + visibility = [], + deps = [":autocfg-1.3.0"], +) + +third_party_rust.buildscript_run( + name = "lock_api-0.4.12-build-script-run", + package_name = "lock_api", + buildscript_rule = ":lock_api-0.4.12-build-script-build", + features = [ + "atomic_usize", + "default", + ], + version = "0.4.12", +) + +http_archive( + name = "log-0.4.22.crate", + sha256 = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24", + strip_prefix = "log-0.4.22", + urls = ["https://static.crates.io/crates/log/0.4.22/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "log-0.4.22", + srcs = [":log-0.4.22.crate"], + crate = "log", + crate_root = "log-0.4.22.crate/src/lib.rs", + edition = "2021", + features = ["std"], + visibility = [], +) + +http_archive( + name = "lru-0.12.4.crate", + sha256 = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904", + strip_prefix = "lru-0.12.4", + urls = ["https://static.crates.io/crates/lru/0.12.4/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "lru-0.12.4", + srcs = [":lru-0.12.4.crate"], + crate = "lru", + crate_root = "lru-0.12.4.crate/src/lib.rs", + edition = "2015", + features = [ + "default", + "hashbrown", + ], + visibility = [], + deps = [":hashbrown-0.14.5"], +) + +alias( + name = "maplit", + actual = ":maplit-1.0.2", + visibility = ["PUBLIC"], +) + +http_archive( + name = "maplit-1.0.2.crate", + sha256 = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d", + strip_prefix = "maplit-1.0.2", + urls = ["https://static.crates.io/crates/maplit/1.0.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "maplit-1.0.2", + srcs = [":maplit-1.0.2.crate"], + crate = "maplit", + crate_root = "maplit-1.0.2.crate/src/lib.rs", + edition = "2015", + visibility = [], +) + +http_archive( + name = "matchers-0.1.0.crate", + sha256 = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558", + strip_prefix = "matchers-0.1.0", + urls = ["https://static.crates.io/crates/matchers/0.1.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "matchers-0.1.0", + srcs = [":matchers-0.1.0.crate"], + crate = "matchers", + crate_root = "matchers-0.1.0.crate/src/lib.rs", + edition = "2018", + visibility = [], + deps = [":regex-automata-0.1.10"], +) + +http_archive( + name = "memchr-2.7.4.crate", + sha256 = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3", + strip_prefix = "memchr-2.7.4", + urls = ["https://static.crates.io/crates/memchr/2.7.4/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "memchr-2.7.4", + srcs = [":memchr-2.7.4.crate"], + crate = "memchr", + crate_root = "memchr-2.7.4.crate/src/lib.rs", + edition = "2021", + features = [ + "alloc", + "default", + "std", + ], + visibility = [], +) + +http_archive( + name = "memmap2-0.9.4.crate", + sha256 = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322", + strip_prefix = "memmap2-0.9.4", + urls = ["https://static.crates.io/crates/memmap2/0.9.4/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "memmap2-0.9.4", + srcs = [":memmap2-0.9.4.crate"], + crate = "memmap2", + crate_root = "memmap2-0.9.4.crate/src/lib.rs", + edition = "2018", + platform = { + "linux-arm64": dict( + deps = [":libc-0.2.159"], + ), + "linux-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "macos-arm64": dict( + deps = [":libc-0.2.159"], + ), + "macos-x86_64": dict( + deps = [":libc-0.2.159"], + ), + }, + visibility = [], +) + +http_archive( + name = "minimal-lexical-0.2.1.crate", + sha256 = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a", + strip_prefix = "minimal-lexical-0.2.1", + urls = ["https://static.crates.io/crates/minimal-lexical/0.2.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "minimal-lexical-0.2.1", + srcs = [":minimal-lexical-0.2.1.crate"], + crate = "minimal_lexical", + crate_root = "minimal-lexical-0.2.1.crate/src/lib.rs", + edition = "2018", + features = ["std"], + visibility = [], +) + +http_archive( + name = "miniz_oxide-0.8.0.crate", + sha256 = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1", + strip_prefix = "miniz_oxide-0.8.0", + urls = ["https://static.crates.io/crates/miniz_oxide/0.8.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "miniz_oxide-0.8.0", + srcs = [":miniz_oxide-0.8.0.crate"], + crate = "miniz_oxide", + crate_root = "miniz_oxide-0.8.0.crate/src/lib.rs", + edition = "2021", + features = ["with-alloc"], + visibility = [], + deps = [":adler2-2.0.0"], +) + +alias( + name = "minus", + actual = ":minus-5.6.1", + visibility = ["PUBLIC"], +) + +http_archive( + name = "minus-5.6.1.crate", + sha256 = "093bd0520d2a37943566a73750e6d44094dac75d66a978d1f0d97ffc78686832", + strip_prefix = "minus-5.6.1", + urls = ["https://static.crates.io/crates/minus/5.6.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "minus-5.6.1", + srcs = [":minus-5.6.1.crate"], + crate = "minus", + crate_root = "minus-5.6.1.crate/src/lib.rs", + edition = "2018", + features = [ + "dynamic_output", + "regex", + "search", + ], + visibility = [], + deps = [ + ":crossbeam-channel-0.5.13", + ":crossterm-0.27.0", + ":once_cell-1.20.2", + ":parking_lot-0.12.3", + ":regex-1.11.0", + ":textwrap-0.16.1", + ":thiserror-1.0.64", + ], +) + +http_archive( + name = "mio-0.8.11.crate", + sha256 = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c", + strip_prefix = "mio-0.8.11", + urls = ["https://static.crates.io/crates/mio/0.8.11/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "mio-0.8.11", + srcs = [":mio-0.8.11.crate"], + crate = "mio", + crate_root = "mio-0.8.11.crate/src/lib.rs", + edition = "2018", + features = [ + "default", + "log", + "net", + "os-ext", + "os-poll", + ], + platform = { + "linux-arm64": dict( + deps = [":libc-0.2.159"], + ), + "linux-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "macos-arm64": dict( + deps = [":libc-0.2.159"], + ), + "macos-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "windows-gnu": dict( + deps = [":windows-sys-0.48.0"], + ), + "windows-msvc": dict( + deps = [":windows-sys-0.48.0"], + ), + }, + visibility = [], + deps = [":log-0.4.22"], +) + +http_archive( + name = "mio-1.0.2.crate", + sha256 = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec", + strip_prefix = "mio-1.0.2", + urls = ["https://static.crates.io/crates/mio/1.0.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "mio-1.0.2", + srcs = [":mio-1.0.2.crate"], + crate = "mio", + crate_root = "mio-1.0.2.crate/src/lib.rs", + edition = "2021", + features = [ + "net", + "os-ext", + "os-poll", + ], + platform = { + "linux-arm64": dict( + deps = [":libc-0.2.159"], + ), + "linux-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "macos-arm64": dict( + deps = [":libc-0.2.159"], + ), + "macos-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "windows-gnu": dict( + deps = [":windows-sys-0.52.0"], + ), + "windows-msvc": dict( + deps = [":windows-sys-0.52.0"], + ), + }, + visibility = [], +) + +http_archive( + name = "multimap-0.10.0.crate", + sha256 = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03", + strip_prefix = "multimap-0.10.0", + urls = ["https://static.crates.io/crates/multimap/0.10.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "multimap-0.10.0", + srcs = [":multimap-0.10.0.crate"], + crate = "multimap", + crate_root = "multimap-0.10.0.crate/src/lib.rs", + edition = "2015", + visibility = [], +) + +http_archive( + name = "nom-7.1.3.crate", + sha256 = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a", + strip_prefix = "nom-7.1.3", + urls = ["https://static.crates.io/crates/nom/7.1.3/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "nom-7.1.3", + srcs = [":nom-7.1.3.crate"], + crate = "nom", + crate_root = "nom-7.1.3.crate/src/lib.rs", + edition = "2018", + features = [ + "alloc", + "default", + "std", + ], + visibility = [], + deps = [ + ":memchr-2.7.4", + ":minimal-lexical-0.2.1", + ], +) + +http_archive( + name = "nu-ansi-term-0.46.0.crate", + sha256 = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84", + strip_prefix = "nu-ansi-term-0.46.0", + urls = ["https://static.crates.io/crates/nu-ansi-term/0.46.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "nu-ansi-term-0.46.0", + srcs = [":nu-ansi-term-0.46.0.crate"], + crate = "nu_ansi_term", + crate_root = "nu-ansi-term-0.46.0.crate/src/lib.rs", + edition = "2018", + platform = { + "windows-gnu": dict( + deps = [":winapi-0.3.9"], + ), + "windows-msvc": dict( + deps = [":winapi-0.3.9"], + ), + }, + visibility = [], + deps = [":overload-0.1.1"], +) + +http_archive( + name = "num-traits-0.2.19.crate", + sha256 = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841", + strip_prefix = "num-traits-0.2.19", + urls = ["https://static.crates.io/crates/num-traits/0.2.19/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "num-traits-0.2.19", + srcs = [":num-traits-0.2.19.crate"], + crate = "num_traits", + crate_root = "num-traits-0.2.19.crate/src/lib.rs", + edition = "2021", + features = [ + "default", + "std", + ], + rustc_flags = ["@$(location :num-traits-0.2.19-build-script-run[rustc_flags])"], + visibility = [], +) + +third_party_rust.rust_binary( + name = "num-traits-0.2.19-build-script-build", + srcs = [":num-traits-0.2.19.crate"], + crate = "build_script_build", + crate_root = "num-traits-0.2.19.crate/build.rs", + edition = "2021", + features = [ + "default", + "std", + ], + visibility = [], + deps = [":autocfg-1.3.0"], +) + +third_party_rust.buildscript_run( + name = "num-traits-0.2.19-build-script-run", + package_name = "num-traits", + buildscript_rule = ":num-traits-0.2.19-build-script-build", + features = [ + "default", + "std", + ], + version = "0.2.19", +) + +alias( + name = "num_cpus", + actual = ":num_cpus-1.16.0", + visibility = ["PUBLIC"], +) + +http_archive( + name = "num_cpus-1.16.0.crate", + sha256 = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43", + strip_prefix = "num_cpus-1.16.0", + urls = ["https://static.crates.io/crates/num_cpus/1.16.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "num_cpus-1.16.0", + srcs = [":num_cpus-1.16.0.crate"], + crate = "num_cpus", + crate_root = "num_cpus-1.16.0.crate/src/lib.rs", + edition = "2015", + platform = { + "linux-arm64": dict( + deps = [":libc-0.2.159"], + ), + "linux-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "macos-arm64": dict( + deps = [":libc-0.2.159"], + ), + "macos-x86_64": dict( + deps = [":libc-0.2.159"], + ), + }, + visibility = [], +) + +alias( + name = "once_cell", + actual = ":once_cell-1.20.2", + visibility = ["PUBLIC"], +) + +http_archive( + name = "once_cell-1.20.2.crate", + sha256 = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775", + strip_prefix = "once_cell-1.20.2", + urls = ["https://static.crates.io/crates/once_cell/1.20.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "once_cell-1.20.2", + srcs = [":once_cell-1.20.2.crate"], + crate = "once_cell", + crate_root = "once_cell-1.20.2.crate/src/lib.rs", + edition = "2021", + features = [ + "alloc", + "default", + "parking_lot", + "race", + "std", + ], + visibility = [], + deps = [":parking_lot_core-0.9.10"], +) + +http_archive( + name = "oorandom-11.1.4.crate", + sha256 = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9", + strip_prefix = "oorandom-11.1.4", + urls = ["https://static.crates.io/crates/oorandom/11.1.4/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "oorandom-11.1.4", + srcs = [":oorandom-11.1.4.crate"], + crate = "oorandom", + crate_root = "oorandom-11.1.4.crate/src/lib.rs", + edition = "2018", + visibility = [], +) + +http_archive( + name = "openssl-probe-0.1.5.crate", + sha256 = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf", + strip_prefix = "openssl-probe-0.1.5", + urls = ["https://static.crates.io/crates/openssl-probe/0.1.5/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "openssl-probe-0.1.5", + srcs = [":openssl-probe-0.1.5.crate"], + crate = "openssl_probe", + crate_root = "openssl-probe-0.1.5.crate/src/lib.rs", + edition = "2015", + visibility = [], +) + +http_archive( + name = "openssl-sys-0.9.103.crate", + sha256 = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6", + strip_prefix = "openssl-sys-0.9.103", + urls = ["https://static.crates.io/crates/openssl-sys/0.9.103/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "openssl-sys-0.9.103", + srcs = [":openssl-sys-0.9.103.crate"], + crate = "openssl_sys", + crate_root = "openssl-sys-0.9.103.crate/src/lib.rs", + edition = "2018", + features = ["unstable_boringssl"], + rustc_flags = ["--cfg=boringssl"], + visibility = [], + deps = [ + "third-party//bssl:crypto", + "third-party//bssl:ssl", + "third-party//bssl/rust:bssl-sys", + ":libc-0.2.159", + ], +) + +http_archive( + name = "option-ext-0.2.0.crate", + sha256 = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d", + strip_prefix = "option-ext-0.2.0", + urls = ["https://static.crates.io/crates/option-ext/0.2.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "option-ext-0.2.0", + srcs = [":option-ext-0.2.0.crate"], + crate = "option_ext", + crate_root = "option-ext-0.2.0.crate/src/lib.rs", + edition = "2015", + visibility = [], +) + +http_archive( + name = "overload-0.1.1.crate", + sha256 = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39", + strip_prefix = "overload-0.1.1", + urls = ["https://static.crates.io/crates/overload/0.1.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "overload-0.1.1", + srcs = [":overload-0.1.1.crate"], + crate = "overload", + crate_root = "overload-0.1.1.crate/src/lib.rs", + edition = "2018", + visibility = [], +) + +http_archive( + name = "parking_lot-0.12.3.crate", + sha256 = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27", + strip_prefix = "parking_lot-0.12.3", + urls = ["https://static.crates.io/crates/parking_lot/0.12.3/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "parking_lot-0.12.3", + srcs = [":parking_lot-0.12.3.crate"], + crate = "parking_lot", + crate_root = "parking_lot-0.12.3.crate/src/lib.rs", + edition = "2021", + features = ["default"], + visibility = [], + deps = [ + ":lock_api-0.4.12", + ":parking_lot_core-0.9.10", + ], +) + +http_archive( + name = "parking_lot_core-0.9.10.crate", + sha256 = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8", + strip_prefix = "parking_lot_core-0.9.10", + urls = ["https://static.crates.io/crates/parking_lot_core/0.9.10/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "parking_lot_core-0.9.10", + srcs = [":parking_lot_core-0.9.10.crate"], + crate = "parking_lot_core", + crate_root = "parking_lot_core-0.9.10.crate/src/lib.rs", + edition = "2021", + platform = { + "linux-arm64": dict( + deps = [":libc-0.2.159"], + ), + "linux-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "macos-arm64": dict( + deps = [":libc-0.2.159"], + ), + "macos-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "windows-gnu": dict( + deps = [":windows-targets-0.52.6"], + ), + "windows-msvc": dict( + deps = [":windows-targets-0.52.6"], + ), + }, + rustc_flags = ["@$(location :parking_lot_core-0.9.10-build-script-run[rustc_flags])"], + visibility = [], + deps = [ + ":cfg-if-1.0.0", + ":smallvec-1.13.2", + ], +) + +third_party_rust.rust_binary( + name = "parking_lot_core-0.9.10-build-script-build", + srcs = [":parking_lot_core-0.9.10.crate"], + crate = "build_script_build", + crate_root = "parking_lot_core-0.9.10.crate/build.rs", + edition = "2021", + visibility = [], +) + +third_party_rust.buildscript_run( + name = "parking_lot_core-0.9.10-build-script-run", + package_name = "parking_lot_core", + buildscript_rule = ":parking_lot_core-0.9.10-build-script-build", + version = "0.9.10", +) + +http_archive( + name = "paste-1.0.15.crate", + sha256 = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a", + strip_prefix = "paste-1.0.15", + urls = ["https://static.crates.io/crates/paste/1.0.15/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "paste-1.0.15", + srcs = [":paste-1.0.15.crate"], + crate = "paste", + crate_root = "paste-1.0.15.crate/src/lib.rs", + edition = "2018", + proc_macro = True, + visibility = [], +) + +http_archive( + name = "pathdiff-0.2.1.crate", + sha256 = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd", + strip_prefix = "pathdiff-0.2.1", + urls = ["https://static.crates.io/crates/pathdiff/0.2.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "pathdiff-0.2.1", + srcs = [":pathdiff-0.2.1.crate"], + crate = "pathdiff", + crate_root = "pathdiff-0.2.1.crate/src/lib.rs", + edition = "2018", + visibility = [], +) + +http_archive( + name = "percent-encoding-2.3.1.crate", + sha256 = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e", + strip_prefix = "percent-encoding-2.3.1", + urls = ["https://static.crates.io/crates/percent-encoding/2.3.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "percent-encoding-2.3.1", + srcs = [":percent-encoding-2.3.1.crate"], + crate = "percent_encoding", + crate_root = "percent-encoding-2.3.1.crate/src/lib.rs", + edition = "2018", + features = [ + "alloc", + "default", + "std", + ], + visibility = [], +) + +alias( + name = "pest", + actual = ":pest-2.7.13", + visibility = ["PUBLIC"], +) + +http_archive( + name = "pest-2.7.13.crate", + sha256 = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9", + strip_prefix = "pest-2.7.13", + urls = ["https://static.crates.io/crates/pest/2.7.13/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "pest-2.7.13", + srcs = [":pest-2.7.13.crate"], + crate = "pest", + crate_root = "pest-2.7.13.crate/src/lib.rs", + edition = "2021", + features = [ + "default", + "memchr", + "std", + ], + visibility = [], + deps = [ + ":memchr-2.7.4", + ":thiserror-1.0.64", + ":ucd-trie-0.1.6", + ], +) + +alias( + name = "pest_derive", + actual = ":pest_derive-2.7.13", + visibility = ["PUBLIC"], +) + +http_archive( + name = "pest_derive-2.7.13.crate", + sha256 = "4d3a6e3394ec80feb3b6393c725571754c6188490265c61aaf260810d6b95aa0", + strip_prefix = "pest_derive-2.7.13", + urls = ["https://static.crates.io/crates/pest_derive/2.7.13/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "pest_derive-2.7.13", + srcs = [":pest_derive-2.7.13.crate"], + crate = "pest_derive", + crate_root = "pest_derive-2.7.13.crate/src/lib.rs", + edition = "2021", + features = [ + "default", + "std", + ], + proc_macro = True, + visibility = [], + deps = [ + ":pest-2.7.13", + ":pest_generator-2.7.13", + ], +) + +http_archive( + name = "pest_generator-2.7.13.crate", + sha256 = "94429506bde1ca69d1b5601962c73f4172ab4726571a59ea95931218cb0e930e", + strip_prefix = "pest_generator-2.7.13", + urls = ["https://static.crates.io/crates/pest_generator/2.7.13/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "pest_generator-2.7.13", + srcs = [":pest_generator-2.7.13.crate"], + crate = "pest_generator", + crate_root = "pest_generator-2.7.13.crate/src/lib.rs", + edition = "2021", + features = ["std"], + visibility = [], + deps = [ + ":pest-2.7.13", + ":pest_meta-2.7.13", + ":proc-macro2-1.0.87", + ":quote-1.0.37", + ":syn-2.0.79", + ], +) + +http_archive( + name = "pest_meta-2.7.13.crate", + sha256 = "ac8a071862e93690b6e34e9a5fb8e33ff3734473ac0245b27232222c4906a33f", + strip_prefix = "pest_meta-2.7.13", + urls = ["https://static.crates.io/crates/pest_meta/2.7.13/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "pest_meta-2.7.13", + srcs = [":pest_meta-2.7.13.crate"], + crate = "pest_meta", + crate_root = "pest_meta-2.7.13.crate/src/lib.rs", + edition = "2021", + features = ["default"], + visibility = [], + deps = [ + ":once_cell-1.20.2", + ":pest-2.7.13", + ], +) + +http_archive( + name = "petgraph-0.6.5.crate", + sha256 = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db", + strip_prefix = "petgraph-0.6.5", + urls = ["https://static.crates.io/crates/petgraph/0.6.5/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "petgraph-0.6.5", + srcs = [":petgraph-0.6.5.crate"], + crate = "petgraph", + crate_root = "petgraph-0.6.5.crate/src/lib.rs", + edition = "2018", + visibility = [], + deps = [ + ":fixedbitset-0.4.2", + ":indexmap-2.6.0", + ], +) + +http_archive( + name = "pin-project-lite-0.2.14.crate", + sha256 = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02", + strip_prefix = "pin-project-lite-0.2.14", + urls = ["https://static.crates.io/crates/pin-project-lite/0.2.14/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "pin-project-lite-0.2.14", + srcs = [":pin-project-lite-0.2.14.crate"], + crate = "pin_project_lite", + crate_root = "pin-project-lite-0.2.14.crate/src/lib.rs", + edition = "2018", + visibility = [], +) + +http_archive( + name = "pin-utils-0.1.0.crate", + sha256 = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184", + strip_prefix = "pin-utils-0.1.0", + urls = ["https://static.crates.io/crates/pin-utils/0.1.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "pin-utils-0.1.0", + srcs = [":pin-utils-0.1.0.crate"], + crate = "pin_utils", + crate_root = "pin-utils-0.1.0.crate/src/lib.rs", + edition = "2018", + visibility = [], +) + +http_archive( + name = "plotters-0.3.6.crate", + sha256 = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3", + strip_prefix = "plotters-0.3.6", + urls = ["https://static.crates.io/crates/plotters/0.3.6/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "plotters-0.3.6", + srcs = [":plotters-0.3.6.crate"], + crate = "plotters", + crate_root = "plotters-0.3.6.crate/src/lib.rs", + edition = "2018", + features = [ + "area_series", + "line_series", + "plotters-svg", + "svg_backend", + ], + visibility = [], + deps = [ + ":num-traits-0.2.19", + ":plotters-backend-0.3.6", + ":plotters-svg-0.3.6", + ], +) + +http_archive( + name = "plotters-backend-0.3.6.crate", + sha256 = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7", + strip_prefix = "plotters-backend-0.3.6", + urls = ["https://static.crates.io/crates/plotters-backend/0.3.6/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "plotters-backend-0.3.6", + srcs = [":plotters-backend-0.3.6.crate"], + crate = "plotters_backend", + crate_root = "plotters-backend-0.3.6.crate/src/lib.rs", + edition = "2018", + visibility = [], +) + +http_archive( + name = "plotters-svg-0.3.6.crate", + sha256 = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705", + strip_prefix = "plotters-svg-0.3.6", + urls = ["https://static.crates.io/crates/plotters-svg/0.3.6/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "plotters-svg-0.3.6", + srcs = [":plotters-svg-0.3.6.crate"], + crate = "plotters_svg", + crate_root = "plotters-svg-0.3.6.crate/src/lib.rs", + edition = "2018", + visibility = [], + deps = [":plotters-backend-0.3.6"], +) + +alias( + name = "pollster", + actual = ":pollster-0.3.0", + visibility = ["PUBLIC"], +) + +http_archive( + name = "pollster-0.3.0.crate", + sha256 = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2", + strip_prefix = "pollster-0.3.0", + urls = ["https://static.crates.io/crates/pollster/0.3.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "pollster-0.3.0", + srcs = [":pollster-0.3.0.crate"], + crate = "pollster", + crate_root = "pollster-0.3.0.crate/src/lib.rs", + edition = "2018", + visibility = [], +) + +http_archive( + name = "ppv-lite86-0.2.20.crate", + sha256 = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04", + strip_prefix = "ppv-lite86-0.2.20", + urls = ["https://static.crates.io/crates/ppv-lite86/0.2.20/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "ppv-lite86-0.2.20", + srcs = [":ppv-lite86-0.2.20.crate"], + crate = "ppv_lite86", + crate_root = "ppv-lite86-0.2.20.crate/src/lib.rs", + edition = "2021", + features = [ + "simd", + "std", + ], + visibility = [], + deps = [":zerocopy-0.7.35"], +) + +http_archive( + name = "predicates-3.1.2.crate", + sha256 = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97", + strip_prefix = "predicates-3.1.2", + urls = ["https://static.crates.io/crates/predicates/3.1.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "predicates-3.1.2", + srcs = [":predicates-3.1.2.crate"], + crate = "predicates", + crate_root = "predicates-3.1.2.crate/src/lib.rs", + edition = "2021", + features = ["diff"], + visibility = [], + deps = [ + ":anstyle-1.0.8", + ":difflib-0.4.0", + ":predicates-core-1.0.8", + ], +) + +http_archive( + name = "predicates-core-1.0.8.crate", + sha256 = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931", + strip_prefix = "predicates-core-1.0.8", + urls = ["https://static.crates.io/crates/predicates-core/1.0.8/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "predicates-core-1.0.8", + srcs = [":predicates-core-1.0.8.crate"], + crate = "predicates_core", + crate_root = "predicates-core-1.0.8.crate/src/lib.rs", + edition = "2021", + visibility = [], +) + +http_archive( + name = "predicates-tree-1.0.11.crate", + sha256 = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13", + strip_prefix = "predicates-tree-1.0.11", + urls = ["https://static.crates.io/crates/predicates-tree/1.0.11/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "predicates-tree-1.0.11", + srcs = [":predicates-tree-1.0.11.crate"], + crate = "predicates_tree", + crate_root = "predicates-tree-1.0.11.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":predicates-core-1.0.8", + ":termtree-0.4.1", + ], +) + +alias( + name = "pretty_assertions", + actual = ":pretty_assertions-1.4.1", + visibility = ["PUBLIC"], +) + +http_archive( + name = "pretty_assertions-1.4.1.crate", + sha256 = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d", + strip_prefix = "pretty_assertions-1.4.1", + urls = ["https://static.crates.io/crates/pretty_assertions/1.4.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "pretty_assertions-1.4.1", + srcs = [":pretty_assertions-1.4.1.crate"], + crate = "pretty_assertions", + crate_root = "pretty_assertions-1.4.1.crate/src/lib.rs", + edition = "2018", + features = [ + "default", + "std", + ], + visibility = [], + deps = [ + ":diff-0.1.13", + ":yansi-1.0.1", + ], +) + +http_archive( + name = "prettyplease-0.2.20.crate", + sha256 = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e", + strip_prefix = "prettyplease-0.2.20", + urls = ["https://static.crates.io/crates/prettyplease/0.2.20/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "prettyplease-0.2.20", + srcs = [":prettyplease-0.2.20.crate"], + crate = "prettyplease", + crate_root = "prettyplease-0.2.20.crate/src/lib.rs", + edition = "2021", + env = { + "CARGO_MANIFEST_DIR": "prettyplease-0.2.20.crate", + "CARGO_PKG_AUTHORS": "David Tolnay ", + "CARGO_PKG_DESCRIPTION": "A minimal `syn` syntax tree pretty-printer", + "CARGO_PKG_NAME": "prettyplease", + "CARGO_PKG_REPOSITORY": "https://github.com/dtolnay/prettyplease", + "CARGO_PKG_VERSION": "0.2.20", + "CARGO_PKG_VERSION_MAJOR": "0", + "CARGO_PKG_VERSION_MINOR": "2", + "CARGO_PKG_VERSION_PATCH": "20", + }, + visibility = [], + deps = [ + ":proc-macro2-1.0.87", + ":syn-2.0.79", + ], +) + +alias( + name = "proc-macro2", + actual = ":proc-macro2-1.0.87", + visibility = ["PUBLIC"], +) + +http_archive( + name = "proc-macro2-1.0.87.crate", + sha256 = "b3e4daa0dcf6feba26f985457cdf104d4b4256fc5a09547140f3631bb076b19a", + strip_prefix = "proc-macro2-1.0.87", + urls = ["https://static.crates.io/crates/proc-macro2/1.0.87/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "proc-macro2-1.0.87", + srcs = [":proc-macro2-1.0.87.crate"], + crate = "proc_macro2", + crate_root = "proc-macro2-1.0.87.crate/src/lib.rs", + edition = "2021", + features = [ + "default", + "proc-macro", + ], + rustc_flags = ["@$(location :proc-macro2-1.0.87-build-script-run[rustc_flags])"], + visibility = [], + deps = [":unicode-ident-1.0.12"], +) + +third_party_rust.rust_binary( + name = "proc-macro2-1.0.87-build-script-build", + srcs = [":proc-macro2-1.0.87.crate"], + crate = "build_script_build", + crate_root = "proc-macro2-1.0.87.crate/build.rs", + edition = "2021", + features = [ + "default", + "proc-macro", + ], + visibility = [], +) + +third_party_rust.buildscript_run( + name = "proc-macro2-1.0.87-build-script-run", + package_name = "proc-macro2", + buildscript_rule = ":proc-macro2-1.0.87-build-script-build", + features = [ + "default", + "proc-macro", + ], + version = "1.0.87", +) + +http_archive( + name = "prodash-28.0.0.crate", + sha256 = "744a264d26b88a6a7e37cbad97953fa233b94d585236310bcbc88474b4092d79", + strip_prefix = "prodash-28.0.0", + urls = ["https://static.crates.io/crates/prodash/28.0.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "prodash-28.0.0", + srcs = [":prodash-28.0.0.crate"], + crate = "prodash", + crate_root = "prodash-28.0.0.crate/src/lib.rs", + edition = "2021", + visibility = [], +) + +alias( + name = "prost", + actual = ":prost-0.12.6", + visibility = ["PUBLIC"], +) + +http_archive( + name = "prost-0.12.6.crate", + sha256 = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29", + strip_prefix = "prost-0.12.6", + urls = ["https://static.crates.io/crates/prost/0.12.6/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "prost-0.12.6", + srcs = [":prost-0.12.6.crate"], + crate = "prost", + crate_root = "prost-0.12.6.crate/src/lib.rs", + edition = "2021", + features = [ + "default", + "derive", + "prost-derive", + "std", + ], + visibility = [], + deps = [ + ":bytes-1.7.1", + ":prost-derive-0.12.6", + ], +) + +alias( + name = "prost-build", + actual = ":prost-build-0.12.6", + visibility = ["PUBLIC"], +) + +http_archive( + name = "prost-build-0.12.6.crate", + sha256 = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4", + strip_prefix = "prost-build-0.12.6", + urls = ["https://static.crates.io/crates/prost-build/0.12.6/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "prost-build-0.12.6", + srcs = [":prost-build-0.12.6.crate"], + crate = "prost_build", + crate_root = "prost-build-0.12.6.crate/src/lib.rs", + edition = "2021", + features = [ + "default", + "format", + ], + visibility = [], + deps = [ + ":bytes-1.7.1", + ":heck-0.5.0", + ":itertools-0.12.1", + ":log-0.4.22", + ":multimap-0.10.0", + ":once_cell-1.20.2", + ":petgraph-0.6.5", + ":prettyplease-0.2.20", + ":prost-0.12.6", + ":prost-types-0.12.6", + ":regex-1.11.0", + ":syn-2.0.79", + ":tempfile-3.13.0", + ], +) + +http_archive( + name = "prost-derive-0.12.6.crate", + sha256 = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1", + strip_prefix = "prost-derive-0.12.6", + urls = ["https://static.crates.io/crates/prost-derive/0.12.6/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "prost-derive-0.12.6", + srcs = [":prost-derive-0.12.6.crate"], + crate = "prost_derive", + crate_root = "prost-derive-0.12.6.crate/src/lib.rs", + edition = "2021", + proc_macro = True, + visibility = [], + deps = [ + ":anyhow-1.0.89", + ":itertools-0.12.1", + ":proc-macro2-1.0.87", + ":quote-1.0.37", + ":syn-2.0.79", + ], +) + +http_archive( + name = "prost-types-0.12.6.crate", + sha256 = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0", + strip_prefix = "prost-types-0.12.6", + urls = ["https://static.crates.io/crates/prost-types/0.12.6/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "prost-types-0.12.6", + srcs = [":prost-types-0.12.6.crate"], + crate = "prost_types", + crate_root = "prost-types-0.12.6.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [":prost-0.12.6"], +) + +alias( + name = "quote", + actual = ":quote-1.0.37", + visibility = ["PUBLIC"], +) + +http_archive( + name = "quote-1.0.37.crate", + sha256 = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af", + strip_prefix = "quote-1.0.37", + urls = ["https://static.crates.io/crates/quote/1.0.37/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "quote-1.0.37", + srcs = [":quote-1.0.37.crate"], + crate = "quote", + crate_root = "quote-1.0.37.crate/src/lib.rs", + edition = "2018", + features = [ + "default", + "proc-macro", + ], + visibility = [], + deps = [":proc-macro2-1.0.87"], +) + +alias( + name = "rand", + actual = ":rand-0.8.5", + visibility = ["PUBLIC"], +) + +http_archive( + name = "rand-0.8.5.crate", + sha256 = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404", + strip_prefix = "rand-0.8.5", + urls = ["https://static.crates.io/crates/rand/0.8.5/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "rand-0.8.5", + srcs = [":rand-0.8.5.crate"], + crate = "rand", + crate_root = "rand-0.8.5.crate/src/lib.rs", + edition = "2018", + features = [ + "alloc", + "default", + "getrandom", + "libc", + "rand_chacha", + "std", + "std_rng", + ], + platform = { + "linux-arm64": dict( + deps = [":libc-0.2.159"], + ), + "linux-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "macos-arm64": dict( + deps = [":libc-0.2.159"], + ), + "macos-x86_64": dict( + deps = [":libc-0.2.159"], + ), + }, + visibility = [], + deps = [ + ":rand_chacha-0.3.1", + ":rand_core-0.6.4", + ], +) + +alias( + name = "rand_chacha", + actual = ":rand_chacha-0.3.1", + visibility = ["PUBLIC"], +) + +http_archive( + name = "rand_chacha-0.3.1.crate", + sha256 = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88", + strip_prefix = "rand_chacha-0.3.1", + urls = ["https://static.crates.io/crates/rand_chacha/0.3.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "rand_chacha-0.3.1", + srcs = [":rand_chacha-0.3.1.crate"], + crate = "rand_chacha", + crate_root = "rand_chacha-0.3.1.crate/src/lib.rs", + edition = "2018", + features = [ + "default", + "std", + ], + visibility = [], + deps = [ + ":ppv-lite86-0.2.20", + ":rand_core-0.6.4", + ], +) + +http_archive( + name = "rand_core-0.6.4.crate", + sha256 = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c", + strip_prefix = "rand_core-0.6.4", + urls = ["https://static.crates.io/crates/rand_core/0.6.4/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "rand_core-0.6.4", + srcs = [":rand_core-0.6.4.crate"], + crate = "rand_core", + crate_root = "rand_core-0.6.4.crate/src/lib.rs", + edition = "2018", + features = [ + "alloc", + "getrandom", + "std", + ], + visibility = [], + deps = [":getrandom-0.2.15"], +) + +http_archive( + name = "ratatui-0.26.3.crate", + sha256 = "f44c9e68fd46eda15c646fbb85e1040b657a58cdc8c98db1d97a55930d991eef", + strip_prefix = "ratatui-0.26.3", + urls = ["https://static.crates.io/crates/ratatui/0.26.3/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "ratatui-0.26.3", + srcs = [":ratatui-0.26.3.crate"], + crate = "ratatui", + crate_root = "ratatui-0.26.3.crate/src/lib.rs", + edition = "2021", + features = [ + "crossterm", + "default", + "underline-color", + ], + visibility = [], + deps = [ + ":bitflags-2.6.0", + ":cassowary-0.3.0", + ":compact_str-0.7.1", + ":crossterm-0.27.0", + ":itertools-0.12.1", + ":lru-0.12.4", + ":paste-1.0.15", + ":stability-0.2.1", + ":strum-0.26.3", + ":unicode-segmentation-1.11.0", + ":unicode-truncate-1.1.0", + ":unicode-width-0.1.14", + ], +) + +alias( + name = "rayon", + actual = ":rayon-1.10.0", + visibility = ["PUBLIC"], +) + +http_archive( + name = "rayon-1.10.0.crate", + sha256 = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa", + strip_prefix = "rayon-1.10.0", + urls = ["https://static.crates.io/crates/rayon/1.10.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "rayon-1.10.0", + srcs = [":rayon-1.10.0.crate"], + crate = "rayon", + crate_root = "rayon-1.10.0.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":either-1.13.0", + ":rayon-core-1.12.1", + ], +) + +http_archive( + name = "rayon-core-1.12.1.crate", + sha256 = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2", + strip_prefix = "rayon-core-1.12.1", + urls = ["https://static.crates.io/crates/rayon-core/1.12.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "rayon-core-1.12.1", + srcs = [":rayon-core-1.12.1.crate"], + crate = "rayon_core", + crate_root = "rayon-core-1.12.1.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":crossbeam-deque-0.8.5", + ":crossbeam-utils-0.8.20", + ], +) + +alias( + name = "ref-cast", + actual = ":ref-cast-1.0.23", + visibility = ["PUBLIC"], +) + +http_archive( + name = "ref-cast-1.0.23.crate", + sha256 = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931", + strip_prefix = "ref-cast-1.0.23", + urls = ["https://static.crates.io/crates/ref-cast/1.0.23/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "ref-cast-1.0.23", + srcs = [":ref-cast-1.0.23.crate"], + crate = "ref_cast", + crate_root = "ref-cast-1.0.23.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [":ref-cast-impl-1.0.23"], +) + +http_archive( + name = "ref-cast-impl-1.0.23.crate", + sha256 = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6", + strip_prefix = "ref-cast-impl-1.0.23", + urls = ["https://static.crates.io/crates/ref-cast-impl/1.0.23/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "ref-cast-impl-1.0.23", + srcs = [":ref-cast-impl-1.0.23.crate"], + crate = "ref_cast_impl", + crate_root = "ref-cast-impl-1.0.23.crate/src/lib.rs", + edition = "2021", + proc_macro = True, + visibility = [], + deps = [ + ":proc-macro2-1.0.87", + ":quote-1.0.37", + ":syn-2.0.79", + ], +) + +alias( + name = "regex", + actual = ":regex-1.11.0", + visibility = ["PUBLIC"], +) + +http_archive( + name = "regex-1.11.0.crate", + sha256 = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8", + strip_prefix = "regex-1.11.0", + urls = ["https://static.crates.io/crates/regex/1.11.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "regex-1.11.0", + srcs = [":regex-1.11.0.crate"], + crate = "regex", + crate_root = "regex-1.11.0.crate/src/lib.rs", + edition = "2021", + features = [ + "default", + "perf", + "perf-backtrack", + "perf-cache", + "perf-dfa", + "perf-inline", + "perf-literal", + "perf-onepass", + "std", + "unicode", + "unicode-age", + "unicode-bool", + "unicode-case", + "unicode-gencat", + "unicode-perl", + "unicode-script", + "unicode-segment", + ], + visibility = [], + deps = [ + ":aho-corasick-1.1.3", + ":memchr-2.7.4", + ":regex-automata-0.4.8", + ":regex-syntax-0.8.5", + ], +) + +http_archive( + name = "regex-automata-0.1.10.crate", + sha256 = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132", + strip_prefix = "regex-automata-0.1.10", + urls = ["https://static.crates.io/crates/regex-automata/0.1.10/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "regex-automata-0.1.10", + srcs = [":regex-automata-0.1.10.crate"], + crate = "regex_automata", + crate_root = "regex-automata-0.1.10.crate/src/lib.rs", + edition = "2015", + features = [ + "default", + "regex-syntax", + "std", + ], + visibility = [], + deps = [":regex-syntax-0.6.29"], +) + +http_archive( + name = "regex-automata-0.4.8.crate", + sha256 = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3", + strip_prefix = "regex-automata-0.4.8", + urls = ["https://static.crates.io/crates/regex-automata/0.4.8/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "regex-automata-0.4.8", + srcs = [":regex-automata-0.4.8.crate"], + crate = "regex_automata", + crate_root = "regex-automata-0.4.8.crate/src/lib.rs", + edition = "2021", + features = [ + "alloc", + "dfa-onepass", + "dfa-search", + "hybrid", + "meta", + "nfa", + "nfa-backtrack", + "nfa-pikevm", + "nfa-thompson", + "perf", + "perf-inline", + "perf-literal", + "perf-literal-multisubstring", + "perf-literal-substring", + "std", + "syntax", + "unicode", + "unicode-age", + "unicode-bool", + "unicode-case", + "unicode-gencat", + "unicode-perl", + "unicode-script", + "unicode-segment", + "unicode-word-boundary", + ], + visibility = [], + deps = [ + ":aho-corasick-1.1.3", + ":memchr-2.7.4", + ":regex-syntax-0.8.5", + ], +) + +http_archive( + name = "regex-syntax-0.6.29.crate", + sha256 = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1", + strip_prefix = "regex-syntax-0.6.29", + urls = ["https://static.crates.io/crates/regex-syntax/0.6.29/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "regex-syntax-0.6.29", + srcs = [":regex-syntax-0.6.29.crate"], + crate = "regex_syntax", + crate_root = "regex-syntax-0.6.29.crate/src/lib.rs", + edition = "2018", + features = [ + "default", + "unicode", + "unicode-age", + "unicode-bool", + "unicode-case", + "unicode-gencat", + "unicode-perl", + "unicode-script", + "unicode-segment", + ], + visibility = [], +) + +http_archive( + name = "regex-syntax-0.8.5.crate", + sha256 = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c", + strip_prefix = "regex-syntax-0.8.5", + urls = ["https://static.crates.io/crates/regex-syntax/0.8.5/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "regex-syntax-0.8.5", + srcs = [":regex-syntax-0.8.5.crate"], + crate = "regex_syntax", + crate_root = "regex-syntax-0.8.5.crate/src/lib.rs", + edition = "2021", + features = [ + "default", + "std", + "unicode", + "unicode-age", + "unicode-bool", + "unicode-case", + "unicode-gencat", + "unicode-perl", + "unicode-script", + "unicode-segment", + ], + visibility = [], +) + +http_archive( + name = "roff-0.2.2.crate", + sha256 = "88f8660c1ff60292143c98d08fc6e2f654d722db50410e3f3797d40baaf9d8f3", + strip_prefix = "roff-0.2.2", + urls = ["https://static.crates.io/crates/roff/0.2.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "roff-0.2.2", + srcs = [":roff-0.2.2.crate"], + crate = "roff", + crate_root = "roff-0.2.2.crate/src/lib.rs", + edition = "2021", + visibility = [], +) + +alias( + name = "rpassword", + actual = ":rpassword-7.3.1", + visibility = ["PUBLIC"], +) + +http_archive( + name = "rpassword-7.3.1.crate", + sha256 = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f", + strip_prefix = "rpassword-7.3.1", + urls = ["https://static.crates.io/crates/rpassword/7.3.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "rpassword-7.3.1", + srcs = [":rpassword-7.3.1.crate"], + crate = "rpassword", + crate_root = "rpassword-7.3.1.crate/src/lib.rs", + edition = "2018", + platform = { + "linux-arm64": dict( + deps = [":libc-0.2.159"], + ), + "linux-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "macos-arm64": dict( + deps = [":libc-0.2.159"], + ), + "macos-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "windows-gnu": dict( + deps = [":windows-sys-0.48.0"], + ), + "windows-msvc": dict( + deps = [":windows-sys-0.48.0"], + ), + }, + visibility = [], + deps = [":rtoolbox-0.0.2"], +) + +http_archive( + name = "rtoolbox-0.0.2.crate", + sha256 = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e", + strip_prefix = "rtoolbox-0.0.2", + urls = ["https://static.crates.io/crates/rtoolbox/0.0.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "rtoolbox-0.0.2", + srcs = [":rtoolbox-0.0.2.crate"], + crate = "rtoolbox", + crate_root = "rtoolbox-0.0.2.crate/src/lib.rs", + edition = "2018", + platform = { + "linux-arm64": dict( + deps = [":libc-0.2.159"], + ), + "linux-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "macos-arm64": dict( + deps = [":libc-0.2.159"], + ), + "macos-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "windows-gnu": dict( + deps = [":windows-sys-0.48.0"], + ), + "windows-msvc": dict( + deps = [":windows-sys-0.48.0"], + ), + }, + visibility = [], +) + +third_party_rust.rust_binary( + name = "rust-third-party-0.0.0-top", + srcs = ["top.rs"], + crate = "top", + crate_root = "top.rs", + edition = "2021", + platform = { + "linux-arm64": dict( + deps = [":rustix-0.38.37"], + ), + "linux-x86_64": dict( + deps = [":rustix-0.38.37"], + ), + "macos-arm64": dict( + deps = [":rustix-0.38.37"], + ), + "macos-x86_64": dict( + deps = [":rustix-0.38.37"], + ), + "windows-gnu": dict( + deps = [":winreg-0.52.0"], + ), + "windows-msvc": dict( + deps = [":winreg-0.52.0"], + ), + }, + visibility = [], + deps = [ + ":anyhow-1.0.89", + ":assert_cmd-2.0.16", + ":assert_matches-1.5.0", + ":async-trait-0.1.83", + ":backoff-0.4.0", + ":blake2-0.10.6", + ":bstr-1.10.0", + ":chrono-0.4.38", + ":chrono-english-0.1.7", + ":clap-4.5.20", + ":clap-markdown-0.1.4", + ":clap_complete-4.5.33", + ":clap_complete_nushell-4.5.4", + ":clap_mangen-0.2.23", + ":clru-0.6.2", + ":config-0.13.4", + ":criterion-0.5.1", + ":crossterm-0.27.0", + ":digest-0.10.7", + ":dirs-5.0.1", + ":dunce-1.0.5", + ":either-1.13.0", + ":esl01-renderdag-0.3.0", + ":futures-0.3.31", + ":git2-0.19.0", + ":gix-0.66.0", + ":gix-filter-0.13.0", + ":glob-0.3.1", + ":hashbrown-0.15.0", + ":hex-0.4.3", + ":ignore-0.4.23", + ":indexmap-2.6.0", + ":indoc-2.0.5", + ":insta-1.40.0", + ":itertools-0.13.0", + ":libc-0.2.159", + ":maplit-1.0.2", + ":minus-5.6.1", + ":num_cpus-1.16.0", + ":once_cell-1.20.2", + ":pest-2.7.13", + ":pest_derive-2.7.13", + ":pollster-0.3.0", + ":pretty_assertions-1.4.1", + ":proc-macro2-1.0.87", + ":prost-0.12.6", + ":prost-build-0.12.6", + ":quote-1.0.37", + ":rand-0.8.5", + ":rand_chacha-0.3.1", + ":rayon-1.10.0", + ":ref-cast-1.0.23", + ":regex-1.11.0", + ":rpassword-7.3.1", + ":scm-record-0.3.0", + ":serde-1.0.208", + ":serde_json-1.0.128", + ":slab-0.4.9", + ":smallvec-1.13.2", + ":strsim-0.11.1", + ":syn-2.0.79", + ":tempfile-3.13.0", + ":test-case-3.3.1", + ":textwrap-0.16.1", + ":thiserror-1.0.64", + ":timeago-0.4.2", + ":tokio-1.40.0", + ":toml_edit-0.19.15", + ":tracing-0.1.40", + ":tracing-chrome-0.7.2", + ":tracing-subscriber-0.3.18", + ":unicode-width-0.1.14", + ":version_check-0.9.5", + ":watchman_client-0.9.0", + ":whoami-1.5.2", + ":zstd-0.12.4", + ], +) + +alias( + name = "rustix", + actual = ":rustix-0.38.37", + visibility = ["PUBLIC"], +) + +http_archive( + name = "rustix-0.38.37.crate", + sha256 = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811", + strip_prefix = "rustix-0.38.37", + urls = ["https://static.crates.io/crates/rustix/0.38.37/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "rustix-0.38.37", + srcs = [":rustix-0.38.37.crate"], + crate = "rustix", + crate_root = "rustix-0.38.37.crate/src/lib.rs", + edition = "2021", + features = [ + "alloc", + "default", + "fs", + "libc-extra-traits", + "std", + "termios", + "use-libc-auxv", + ], + platform = { + "linux-arm64": dict( + named_deps = { + "libc_errno": ":errno-0.3.9", + }, + deps = [ + ":libc-0.2.159", + ":linux-raw-sys-0.4.14", + ], + ), + "linux-x86_64": dict( + named_deps = { + "libc_errno": ":errno-0.3.9", + }, + deps = [ + ":libc-0.2.159", + ":linux-raw-sys-0.4.14", + ], + ), + "macos-arm64": dict( + named_deps = { + "libc_errno": ":errno-0.3.9", + }, + deps = [":libc-0.2.159"], + ), + "macos-x86_64": dict( + named_deps = { + "libc_errno": ":errno-0.3.9", + }, + deps = [":libc-0.2.159"], + ), + "windows-gnu": dict( + named_deps = { + "libc_errno": ":errno-0.3.9", + }, + deps = [":windows-sys-0.52.0"], + ), + "windows-msvc": dict( + named_deps = { + "libc_errno": ":errno-0.3.9", + }, + deps = [":windows-sys-0.52.0"], + ), + }, + rustc_flags = ["@$(location :rustix-0.38.37-build-script-run[rustc_flags])"], + visibility = [], + deps = [":bitflags-2.6.0"], +) + +third_party_rust.rust_binary( + name = "rustix-0.38.37-build-script-build", + srcs = [":rustix-0.38.37.crate"], + crate = "build_script_build", + crate_root = "rustix-0.38.37.crate/build.rs", + edition = "2021", + features = [ + "alloc", + "default", + "fs", + "libc-extra-traits", + "std", + "termios", + "use-libc-auxv", + ], + visibility = [], +) + +third_party_rust.buildscript_run( + name = "rustix-0.38.37-build-script-run", + package_name = "rustix", + buildscript_rule = ":rustix-0.38.37-build-script-build", + features = [ + "alloc", + "default", + "fs", + "libc-extra-traits", + "std", + "termios", + "use-libc-auxv", + ], + version = "0.38.37", +) + +http_archive( + name = "rustversion-1.0.17.crate", + sha256 = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6", + strip_prefix = "rustversion-1.0.17", + urls = ["https://static.crates.io/crates/rustversion/1.0.17/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "rustversion-1.0.17", + srcs = [":rustversion-1.0.17.crate"], + crate = "rustversion", + crate_root = "rustversion-1.0.17.crate/src/lib.rs", + edition = "2018", + env = { + "CARGO_MANIFEST_DIR": "rustversion-1.0.17.crate", + "CARGO_PKG_AUTHORS": "David Tolnay ", + "CARGO_PKG_DESCRIPTION": "Conditional compilation according to rustc compiler version", + "CARGO_PKG_NAME": "rustversion", + "CARGO_PKG_REPOSITORY": "https://github.com/dtolnay/rustversion", + "CARGO_PKG_VERSION": "1.0.17", + "CARGO_PKG_VERSION_MAJOR": "1", + "CARGO_PKG_VERSION_MINOR": "0", + "CARGO_PKG_VERSION_PATCH": "17", + "OUT_DIR": "$(location :rustversion-1.0.17-build-script-run[out_dir])", + }, + proc_macro = True, + visibility = [], +) + +third_party_rust.rust_binary( + name = "rustversion-1.0.17-build-script-build", + srcs = [":rustversion-1.0.17.crate"], + crate = "build_script_build", + crate_root = "rustversion-1.0.17.crate/build/build.rs", + edition = "2018", + env = { + "CARGO_MANIFEST_DIR": "rustversion-1.0.17.crate", + "CARGO_PKG_AUTHORS": "David Tolnay ", + "CARGO_PKG_DESCRIPTION": "Conditional compilation according to rustc compiler version", + "CARGO_PKG_NAME": "rustversion", + "CARGO_PKG_REPOSITORY": "https://github.com/dtolnay/rustversion", + "CARGO_PKG_VERSION": "1.0.17", + "CARGO_PKG_VERSION_MAJOR": "1", + "CARGO_PKG_VERSION_MINOR": "0", + "CARGO_PKG_VERSION_PATCH": "17", + }, + visibility = [], +) + +third_party_rust.buildscript_run( + name = "rustversion-1.0.17-build-script-run", + package_name = "rustversion", + buildscript_rule = ":rustversion-1.0.17-build-script-build", + version = "1.0.17", +) + +http_archive( + name = "ryu-1.0.18.crate", + sha256 = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f", + strip_prefix = "ryu-1.0.18", + urls = ["https://static.crates.io/crates/ryu/1.0.18/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "ryu-1.0.18", + srcs = [":ryu-1.0.18.crate"], + crate = "ryu", + crate_root = "ryu-1.0.18.crate/src/lib.rs", + edition = "2018", + visibility = [], +) + +http_archive( + name = "same-file-1.0.6.crate", + sha256 = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502", + strip_prefix = "same-file-1.0.6", + urls = ["https://static.crates.io/crates/same-file/1.0.6/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "same-file-1.0.6", + srcs = [":same-file-1.0.6.crate"], + crate = "same_file", + crate_root = "same-file-1.0.6.crate/src/lib.rs", + edition = "2018", + platform = { + "windows-gnu": dict( + deps = [":winapi-util-0.1.9"], + ), + "windows-msvc": dict( + deps = [":winapi-util-0.1.9"], + ), + }, + visibility = [], +) + +http_archive( + name = "scanlex-0.1.4.crate", + sha256 = "088c5d71572124929ea7549a8ce98e1a6fd33d0a38367b09027b382e67c033db", + strip_prefix = "scanlex-0.1.4", + urls = ["https://static.crates.io/crates/scanlex/0.1.4/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "scanlex-0.1.4", + srcs = [":scanlex-0.1.4.crate"], + crate = "scanlex", + crate_root = "scanlex-0.1.4.crate/src/lib.rs", + edition = "2015", + visibility = [], +) + +alias( + name = "scm-record", + actual = ":scm-record-0.3.0", + visibility = ["PUBLIC"], +) + +http_archive( + name = "scm-record-0.3.0.crate", + sha256 = "4a1bf431016c7a34038f440696c672f0fee1a15d6aea31fe100df6974a35bf5f", + strip_prefix = "scm-record-0.3.0", + urls = ["https://static.crates.io/crates/scm-record/0.3.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "scm-record-0.3.0", + srcs = [":scm-record-0.3.0.crate"], + crate = "scm_record", + crate_root = "scm-record-0.3.0.crate/src/lib.rs", + edition = "2021", + features = [ + "debug", + "default", + "serde", + ], + visibility = [], + deps = [ + ":cassowary-0.3.0", + ":crossterm-0.27.0", + ":num-traits-0.2.19", + ":ratatui-0.26.3", + ":serde-1.0.208", + ":serde_json-1.0.128", + ":thiserror-1.0.64", + ":tracing-0.1.40", + ":unicode-width-0.1.14", + ], +) + +http_archive( + name = "scopeguard-1.2.0.crate", + sha256 = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49", + strip_prefix = "scopeguard-1.2.0", + urls = ["https://static.crates.io/crates/scopeguard/1.2.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "scopeguard-1.2.0", + srcs = [":scopeguard-1.2.0.crate"], + crate = "scopeguard", + crate_root = "scopeguard-1.2.0.crate/src/lib.rs", + edition = "2015", + visibility = [], +) + +alias( + name = "serde", + actual = ":serde-1.0.208", + visibility = ["PUBLIC"], +) + +http_archive( + name = "serde-1.0.208.crate", + sha256 = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2", + strip_prefix = "serde-1.0.208", + urls = ["https://static.crates.io/crates/serde/1.0.208/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "serde-1.0.208", + srcs = [":serde-1.0.208.crate"], + crate = "serde", + crate_root = "serde-1.0.208.crate/src/lib.rs", + edition = "2018", + features = [ + "alloc", + "default", + "derive", + "rc", + "serde_derive", + "std", + ], + visibility = [], + deps = [":serde_derive-1.0.208"], +) + +http_archive( + name = "serde_bser-0.4.0.crate", + sha256 = "a56b4bcc15e42e5b5ae16c6f75582bef80d36c6ffe2c03b1b5317754b38f8717", + strip_prefix = "serde_bser-0.4.0", + urls = ["https://static.crates.io/crates/serde_bser/0.4.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "serde_bser-0.4.0", + srcs = [":serde_bser-0.4.0.crate"], + crate = "serde_bser", + crate_root = "serde_bser-0.4.0.crate/src/lib.rs", + edition = "2021", + features = ["default"], + visibility = [], + deps = [ + ":anyhow-1.0.89", + ":byteorder-1.5.0", + ":bytes-1.7.1", + ":serde-1.0.208", + ":serde_bytes-0.11.15", + ":thiserror-1.0.64", + ], +) + +http_archive( + name = "serde_bytes-0.11.15.crate", + sha256 = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a", + strip_prefix = "serde_bytes-0.11.15", + urls = ["https://static.crates.io/crates/serde_bytes/0.11.15/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "serde_bytes-0.11.15", + srcs = [":serde_bytes-0.11.15.crate"], + crate = "serde_bytes", + crate_root = "serde_bytes-0.11.15.crate/src/lib.rs", + edition = "2018", + features = [ + "default", + "std", + ], + visibility = [], + deps = [":serde-1.0.208"], +) + +http_archive( + name = "serde_derive-1.0.208.crate", + sha256 = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf", + strip_prefix = "serde_derive-1.0.208", + urls = ["https://static.crates.io/crates/serde_derive/1.0.208/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "serde_derive-1.0.208", + srcs = [":serde_derive-1.0.208.crate"], + crate = "serde_derive", + crate_root = "serde_derive-1.0.208.crate/src/lib.rs", + edition = "2015", + env = { + "CARGO_MANIFEST_DIR": "serde_derive-1.0.208.crate", + "CARGO_PKG_AUTHORS": "Erick Tryzelaar :David Tolnay ", + "CARGO_PKG_DESCRIPTION": "Macros 1.1 implementation of #[derive(Serialize, Deserialize)]", + "CARGO_PKG_NAME": "serde_derive", + "CARGO_PKG_REPOSITORY": "https://github.com/serde-rs/serde", + "CARGO_PKG_VERSION": "1.0.208", + "CARGO_PKG_VERSION_MAJOR": "1", + "CARGO_PKG_VERSION_MINOR": "0", + "CARGO_PKG_VERSION_PATCH": "208", + }, + features = ["default"], + proc_macro = True, + visibility = [], + deps = [ + ":proc-macro2-1.0.87", + ":quote-1.0.37", + ":syn-2.0.79", + ], +) + +alias( + name = "serde_json", + actual = ":serde_json-1.0.128", + visibility = ["PUBLIC"], +) + +http_archive( + name = "serde_json-1.0.128.crate", + sha256 = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8", + strip_prefix = "serde_json-1.0.128", + urls = ["https://static.crates.io/crates/serde_json/1.0.128/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "serde_json-1.0.128", + srcs = [":serde_json-1.0.128.crate"], + crate = "serde_json", + crate_root = "serde_json-1.0.128.crate/src/lib.rs", + edition = "2021", + features = [ + "default", + "std", + ], + rustc_flags = ["@$(location :serde_json-1.0.128-build-script-run[rustc_flags])"], + visibility = [], + deps = [ + ":itoa-1.0.11", + ":memchr-2.7.4", + ":ryu-1.0.18", + ":serde-1.0.208", + ], +) + +third_party_rust.rust_binary( + name = "serde_json-1.0.128-build-script-build", + srcs = [":serde_json-1.0.128.crate"], + crate = "build_script_build", + crate_root = "serde_json-1.0.128.crate/build.rs", + edition = "2021", + features = [ + "default", + "std", + ], + visibility = [], +) + +third_party_rust.buildscript_run( + name = "serde_json-1.0.128-build-script-run", + package_name = "serde_json", + buildscript_rule = ":serde_json-1.0.128-build-script-build", + features = [ + "default", + "std", + ], + version = "1.0.128", +) + +http_archive( + name = "serde_spanned-0.6.7.crate", + sha256 = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d", + strip_prefix = "serde_spanned-0.6.7", + urls = ["https://static.crates.io/crates/serde_spanned/0.6.7/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "serde_spanned-0.6.7", + srcs = [":serde_spanned-0.6.7.crate"], + crate = "serde_spanned", + crate_root = "serde_spanned-0.6.7.crate/src/lib.rs", + edition = "2021", + features = ["serde"], + visibility = [], + deps = [":serde-1.0.208"], +) + +http_archive( + name = "sha1_smol-1.0.1.crate", + sha256 = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d", + strip_prefix = "sha1_smol-1.0.1", + urls = ["https://static.crates.io/crates/sha1_smol/1.0.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "sha1_smol-1.0.1", + srcs = [":sha1_smol-1.0.1.crate"], + crate = "sha1_smol", + crate_root = "sha1_smol-1.0.1.crate/src/lib.rs", + edition = "2018", + visibility = [], +) + +http_archive( + name = "sharded-slab-0.1.7.crate", + sha256 = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6", + strip_prefix = "sharded-slab-0.1.7", + urls = ["https://static.crates.io/crates/sharded-slab/0.1.7/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "sharded-slab-0.1.7", + srcs = [":sharded-slab-0.1.7.crate"], + crate = "sharded_slab", + crate_root = "sharded-slab-0.1.7.crate/src/lib.rs", + edition = "2018", + visibility = [], + deps = [":lazy_static-1.5.0"], +) + +http_archive( + name = "shell-words-1.1.0.crate", + sha256 = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde", + strip_prefix = "shell-words-1.1.0", + urls = ["https://static.crates.io/crates/shell-words/1.1.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "shell-words-1.1.0", + srcs = [":shell-words-1.1.0.crate"], + crate = "shell_words", + crate_root = "shell-words-1.1.0.crate/src/lib.rs", + edition = "2015", + features = [ + "default", + "std", + ], + visibility = [], +) + +http_archive( + name = "signal-hook-0.3.17.crate", + sha256 = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801", + strip_prefix = "signal-hook-0.3.17", + urls = ["https://static.crates.io/crates/signal-hook/0.3.17/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "signal-hook-0.3.17", + srcs = [":signal-hook-0.3.17.crate"], + crate = "signal_hook", + crate_root = "signal-hook-0.3.17.crate/src/lib.rs", + edition = "2018", + features = [ + "channel", + "default", + "iterator", + ], + visibility = [], + deps = [ + ":libc-0.2.159", + ":signal-hook-registry-1.4.2", + ], +) + +http_archive( + name = "signal-hook-mio-0.2.4.crate", + sha256 = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd", + strip_prefix = "signal-hook-mio-0.2.4", + urls = ["https://static.crates.io/crates/signal-hook-mio/0.2.4/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "signal-hook-mio-0.2.4", + srcs = [":signal-hook-mio-0.2.4.crate"], + crate = "signal_hook_mio", + crate_root = "signal-hook-mio-0.2.4.crate/src/lib.rs", + edition = "2018", + features = [ + "mio-0_8", + "support-v0_8", + ], + named_deps = { + "mio_0_8": ":mio-0.8.11", + }, + visibility = [], + deps = [ + ":libc-0.2.159", + ":signal-hook-0.3.17", + ], +) + +http_archive( + name = "signal-hook-registry-1.4.2.crate", + sha256 = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1", + strip_prefix = "signal-hook-registry-1.4.2", + urls = ["https://static.crates.io/crates/signal-hook-registry/1.4.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "signal-hook-registry-1.4.2", + srcs = [":signal-hook-registry-1.4.2.crate"], + crate = "signal_hook_registry", + crate_root = "signal-hook-registry-1.4.2.crate/src/lib.rs", + edition = "2015", + visibility = [], + deps = [":libc-0.2.159"], +) + +http_archive( + name = "similar-2.6.0.crate", + sha256 = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e", + strip_prefix = "similar-2.6.0", + urls = ["https://static.crates.io/crates/similar/2.6.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "similar-2.6.0", + srcs = [":similar-2.6.0.crate"], + crate = "similar", + crate_root = "similar-2.6.0.crate/src/lib.rs", + edition = "2018", + features = [ + "default", + "inline", + "text", + ], + visibility = [], +) + +alias( + name = "slab", + actual = ":slab-0.4.9", + visibility = ["PUBLIC"], +) + +http_archive( + name = "slab-0.4.9.crate", + sha256 = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67", + strip_prefix = "slab-0.4.9", + urls = ["https://static.crates.io/crates/slab/0.4.9/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "slab-0.4.9", + srcs = [":slab-0.4.9.crate"], + crate = "slab", + crate_root = "slab-0.4.9.crate/src/lib.rs", + edition = "2018", + features = [ + "default", + "std", + ], + visibility = [], +) + +alias( + name = "smallvec", + actual = ":smallvec-1.13.2", + visibility = ["PUBLIC"], +) + +http_archive( + name = "smallvec-1.13.2.crate", + sha256 = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67", + strip_prefix = "smallvec-1.13.2", + urls = ["https://static.crates.io/crates/smallvec/1.13.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "smallvec-1.13.2", + srcs = [":smallvec-1.13.2.crate"], + crate = "smallvec", + crate_root = "smallvec-1.13.2.crate/src/lib.rs", + edition = "2018", + features = [ + "const_generics", + "const_new", + "union", + "write", + ], + visibility = [], +) + +http_archive( + name = "smawk-0.3.2.crate", + sha256 = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c", + strip_prefix = "smawk-0.3.2", + urls = ["https://static.crates.io/crates/smawk/0.3.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "smawk-0.3.2", + srcs = [":smawk-0.3.2.crate"], + crate = "smawk", + crate_root = "smawk-0.3.2.crate/src/lib.rs", + edition = "2021", + visibility = [], +) + +http_archive( + name = "socket2-0.5.7.crate", + sha256 = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c", + strip_prefix = "socket2-0.5.7", + urls = ["https://static.crates.io/crates/socket2/0.5.7/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "socket2-0.5.7", + srcs = [":socket2-0.5.7.crate"], + crate = "socket2", + crate_root = "socket2-0.5.7.crate/src/lib.rs", + edition = "2021", + features = ["all"], + platform = { + "linux-arm64": dict( + deps = [":libc-0.2.159"], + ), + "linux-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "macos-arm64": dict( + deps = [":libc-0.2.159"], + ), + "macos-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "windows-gnu": dict( + deps = [":windows-sys-0.52.0"], + ), + "windows-msvc": dict( + deps = [":windows-sys-0.52.0"], + ), + }, + visibility = [], +) + +http_archive( + name = "stability-0.2.1.crate", + sha256 = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac", + strip_prefix = "stability-0.2.1", + urls = ["https://static.crates.io/crates/stability/0.2.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "stability-0.2.1", + srcs = [":stability-0.2.1.crate"], + crate = "stability", + crate_root = "stability-0.2.1.crate/src/lib.rs", + edition = "2021", + proc_macro = True, + visibility = [], + deps = [ + ":quote-1.0.37", + ":syn-2.0.79", + ], +) + +http_archive( + name = "static_assertions-1.1.0.crate", + sha256 = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f", + strip_prefix = "static_assertions-1.1.0", + urls = ["https://static.crates.io/crates/static_assertions/1.1.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "static_assertions-1.1.0", + srcs = [":static_assertions-1.1.0.crate"], + crate = "static_assertions", + crate_root = "static_assertions-1.1.0.crate/src/lib.rs", + edition = "2015", + visibility = [], +) + +alias( + name = "strsim", + actual = ":strsim-0.11.1", + visibility = ["PUBLIC"], +) + +http_archive( + name = "strsim-0.11.1.crate", + sha256 = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f", + strip_prefix = "strsim-0.11.1", + urls = ["https://static.crates.io/crates/strsim/0.11.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "strsim-0.11.1", + srcs = [":strsim-0.11.1.crate"], + crate = "strsim", + crate_root = "strsim-0.11.1.crate/src/lib.rs", + edition = "2015", + visibility = [], +) + +http_archive( + name = "strum-0.26.3.crate", + sha256 = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06", + strip_prefix = "strum-0.26.3", + urls = ["https://static.crates.io/crates/strum/0.26.3/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "strum-0.26.3", + srcs = [":strum-0.26.3.crate"], + crate = "strum", + crate_root = "strum-0.26.3.crate/src/lib.rs", + edition = "2018", + features = [ + "default", + "derive", + "std", + "strum_macros", + ], + visibility = [], + deps = [":strum_macros-0.26.4"], +) + +http_archive( + name = "strum_macros-0.26.4.crate", + sha256 = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be", + strip_prefix = "strum_macros-0.26.4", + urls = ["https://static.crates.io/crates/strum_macros/0.26.4/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "strum_macros-0.26.4", + srcs = [":strum_macros-0.26.4.crate"], + crate = "strum_macros", + crate_root = "strum_macros-0.26.4.crate/src/lib.rs", + edition = "2018", + proc_macro = True, + visibility = [], + deps = [ + ":heck-0.5.0", + ":proc-macro2-1.0.87", + ":quote-1.0.37", + ":rustversion-1.0.17", + ":syn-2.0.79", + ], +) + +http_archive( + name = "subtle-2.6.1.crate", + sha256 = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292", + strip_prefix = "subtle-2.6.1", + urls = ["https://static.crates.io/crates/subtle/2.6.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "subtle-2.6.1", + srcs = [":subtle-2.6.1.crate"], + crate = "subtle", + crate_root = "subtle-2.6.1.crate/src/lib.rs", + edition = "2018", + visibility = [], +) + +alias( + name = "syn", + actual = ":syn-2.0.79", + visibility = ["PUBLIC"], +) + +http_archive( + name = "syn-2.0.79.crate", + sha256 = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590", + strip_prefix = "syn-2.0.79", + urls = ["https://static.crates.io/crates/syn/2.0.79/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "syn-2.0.79", + srcs = [":syn-2.0.79.crate"], + crate = "syn", + crate_root = "syn-2.0.79.crate/src/lib.rs", + edition = "2021", + features = [ + "clone-impls", + "default", + "derive", + "extra-traits", + "full", + "parsing", + "printing", + "proc-macro", + "visit", + "visit-mut", + ], + visibility = [], + deps = [ + ":proc-macro2-1.0.87", + ":quote-1.0.37", + ":unicode-ident-1.0.12", + ], +) + +alias( + name = "tempfile", + actual = ":tempfile-3.13.0", + visibility = ["PUBLIC"], +) + +http_archive( + name = "tempfile-3.13.0.crate", + sha256 = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b", + strip_prefix = "tempfile-3.13.0", + urls = ["https://static.crates.io/crates/tempfile/3.13.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "tempfile-3.13.0", + srcs = [":tempfile-3.13.0.crate"], + crate = "tempfile", + crate_root = "tempfile-3.13.0.crate/src/lib.rs", + edition = "2021", + platform = { + "linux-arm64": dict( + deps = [":rustix-0.38.37"], + ), + "linux-x86_64": dict( + deps = [":rustix-0.38.37"], + ), + "macos-arm64": dict( + deps = [":rustix-0.38.37"], + ), + "macos-x86_64": dict( + deps = [":rustix-0.38.37"], + ), + "windows-gnu": dict( + deps = [":windows-sys-0.59.0"], + ), + "windows-msvc": dict( + deps = [":windows-sys-0.59.0"], + ), + }, + visibility = [], + deps = [ + ":cfg-if-1.0.0", + ":fastrand-2.1.1", + ":once_cell-1.20.2", + ], +) + +http_archive( + name = "terminal_size-0.4.0.crate", + sha256 = "4f599bd7ca042cfdf8f4512b277c02ba102247820f9d9d4a9f521f496751a6ef", + strip_prefix = "terminal_size-0.4.0", + urls = ["https://static.crates.io/crates/terminal_size/0.4.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "terminal_size-0.4.0", + srcs = [":terminal_size-0.4.0.crate"], + crate = "terminal_size", + crate_root = "terminal_size-0.4.0.crate/src/lib.rs", + edition = "2021", + platform = { + "linux-arm64": dict( + deps = [":rustix-0.38.37"], + ), + "linux-x86_64": dict( + deps = [":rustix-0.38.37"], + ), + "macos-arm64": dict( + deps = [":rustix-0.38.37"], + ), + "macos-x86_64": dict( + deps = [":rustix-0.38.37"], + ), + "windows-gnu": dict( + deps = [":windows-sys-0.59.0"], + ), + "windows-msvc": dict( + deps = [":windows-sys-0.59.0"], + ), + }, + visibility = [], +) + +http_archive( + name = "termtree-0.4.1.crate", + sha256 = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76", + strip_prefix = "termtree-0.4.1", + urls = ["https://static.crates.io/crates/termtree/0.4.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "termtree-0.4.1", + srcs = [":termtree-0.4.1.crate"], + crate = "termtree", + crate_root = "termtree-0.4.1.crate/src/lib.rs", + edition = "2018", + visibility = [], +) + +alias( + name = "test-case", + actual = ":test-case-3.3.1", + visibility = ["PUBLIC"], +) + +http_archive( + name = "test-case-3.3.1.crate", + sha256 = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8", + strip_prefix = "test-case-3.3.1", + urls = ["https://static.crates.io/crates/test-case/3.3.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "test-case-3.3.1", + srcs = [":test-case-3.3.1.crate"], + crate = "test_case", + crate_root = "test-case-3.3.1.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [":test-case-macros-3.3.1"], +) + +http_archive( + name = "test-case-core-3.3.1.crate", + sha256 = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f", + strip_prefix = "test-case-core-3.3.1", + urls = ["https://static.crates.io/crates/test-case-core/3.3.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "test-case-core-3.3.1", + srcs = [":test-case-core-3.3.1.crate"], + crate = "test_case_core", + crate_root = "test-case-core-3.3.1.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":cfg-if-1.0.0", + ":proc-macro2-1.0.87", + ":quote-1.0.37", + ":syn-2.0.79", + ], +) + +http_archive( + name = "test-case-macros-3.3.1.crate", + sha256 = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb", + strip_prefix = "test-case-macros-3.3.1", + urls = ["https://static.crates.io/crates/test-case-macros/3.3.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "test-case-macros-3.3.1", + srcs = [":test-case-macros-3.3.1.crate"], + crate = "test_case_macros", + crate_root = "test-case-macros-3.3.1.crate/src/lib.rs", + edition = "2021", + proc_macro = True, + visibility = [], + deps = [ + ":proc-macro2-1.0.87", + ":quote-1.0.37", + ":syn-2.0.79", + ":test-case-core-3.3.1", + ], +) + +alias( + name = "textwrap", + actual = ":textwrap-0.16.1", + visibility = ["PUBLIC"], +) + +http_archive( + name = "textwrap-0.16.1.crate", + sha256 = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9", + strip_prefix = "textwrap-0.16.1", + urls = ["https://static.crates.io/crates/textwrap/0.16.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "textwrap-0.16.1", + srcs = [":textwrap-0.16.1.crate"], + crate = "textwrap", + crate_root = "textwrap-0.16.1.crate/src/lib.rs", + edition = "2021", + features = [ + "default", + "smawk", + "unicode-linebreak", + "unicode-width", + ], + visibility = [], + deps = [ + ":smawk-0.3.2", + ":unicode-linebreak-0.1.5", + ":unicode-width-0.1.14", + ], +) + +alias( + name = "thiserror", + actual = ":thiserror-1.0.64", + visibility = ["PUBLIC"], +) + +http_archive( + name = "thiserror-1.0.64.crate", + sha256 = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84", + strip_prefix = "thiserror-1.0.64", + urls = ["https://static.crates.io/crates/thiserror/1.0.64/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "thiserror-1.0.64", + srcs = [":thiserror-1.0.64.crate"], + crate = "thiserror", + crate_root = "thiserror-1.0.64.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [":thiserror-impl-1.0.64"], +) + +http_archive( + name = "thiserror-impl-1.0.64.crate", + sha256 = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3", + strip_prefix = "thiserror-impl-1.0.64", + urls = ["https://static.crates.io/crates/thiserror-impl/1.0.64/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "thiserror-impl-1.0.64", + srcs = [":thiserror-impl-1.0.64.crate"], + crate = "thiserror_impl", + crate_root = "thiserror-impl-1.0.64.crate/src/lib.rs", + edition = "2021", + proc_macro = True, + visibility = [], + deps = [ + ":proc-macro2-1.0.87", + ":quote-1.0.37", + ":syn-2.0.79", + ], +) + +http_archive( + name = "thread_local-1.1.8.crate", + sha256 = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c", + strip_prefix = "thread_local-1.1.8", + urls = ["https://static.crates.io/crates/thread_local/1.1.8/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "thread_local-1.1.8", + srcs = [":thread_local-1.1.8.crate"], + crate = "thread_local", + crate_root = "thread_local-1.1.8.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [ + ":cfg-if-1.0.0", + ":once_cell-1.20.2", + ], +) + +alias( + name = "timeago", + actual = ":timeago-0.4.2", + visibility = ["PUBLIC"], +) + +http_archive( + name = "timeago-0.4.2.crate", + sha256 = "a1710e589de0a76aaf295cd47a6699f6405737dbfd3cf2b75c92d000b548d0e6", + strip_prefix = "timeago-0.4.2", + urls = ["https://static.crates.io/crates/timeago/0.4.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "timeago-0.4.2", + srcs = [":timeago-0.4.2.crate"], + crate = "timeago", + crate_root = "timeago-0.4.2.crate/src/lib.rs", + edition = "2015", + visibility = [], +) + +http_archive( + name = "tinytemplate-1.2.1.crate", + sha256 = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc", + strip_prefix = "tinytemplate-1.2.1", + urls = ["https://static.crates.io/crates/tinytemplate/1.2.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "tinytemplate-1.2.1", + srcs = [":tinytemplate-1.2.1.crate"], + crate = "tinytemplate", + crate_root = "tinytemplate-1.2.1.crate/src/lib.rs", + edition = "2015", + visibility = [], + deps = [ + ":serde-1.0.208", + ":serde_json-1.0.128", + ], +) + +http_archive( + name = "tinyvec-1.8.0.crate", + sha256 = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938", + strip_prefix = "tinyvec-1.8.0", + urls = ["https://static.crates.io/crates/tinyvec/1.8.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "tinyvec-1.8.0", + srcs = [":tinyvec-1.8.0.crate"], + crate = "tinyvec", + crate_root = "tinyvec-1.8.0.crate/src/lib.rs", + edition = "2018", + features = [ + "alloc", + "default", + "tinyvec_macros", + ], + visibility = [], + deps = [":tinyvec_macros-0.1.1"], +) + +http_archive( + name = "tinyvec_macros-0.1.1.crate", + sha256 = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20", + strip_prefix = "tinyvec_macros-0.1.1", + urls = ["https://static.crates.io/crates/tinyvec_macros/0.1.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "tinyvec_macros-0.1.1", + srcs = [":tinyvec_macros-0.1.1.crate"], + crate = "tinyvec_macros", + crate_root = "tinyvec_macros-0.1.1.crate/src/lib.rs", + edition = "2018", + visibility = [], +) + +alias( + name = "tokio", + actual = ":tokio-1.40.0", + visibility = ["PUBLIC"], +) + +http_archive( + name = "tokio-1.40.0.crate", + sha256 = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998", + strip_prefix = "tokio-1.40.0", + urls = ["https://static.crates.io/crates/tokio/1.40.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "tokio-1.40.0", + srcs = [":tokio-1.40.0.crate"], + crate = "tokio", + crate_root = "tokio-1.40.0.crate/src/lib.rs", + edition = "2021", + features = [ + "bytes", + "default", + "fs", + "full", + "io-std", + "io-util", + "libc", + "macros", + "mio", + "net", + "parking_lot", + "process", + "rt", + "rt-multi-thread", + "signal", + "signal-hook-registry", + "socket2", + "sync", + "test-util", + "time", + "tokio-macros", + "windows-sys", + ], + platform = { + "linux-arm64": dict( + deps = [ + ":libc-0.2.159", + ":signal-hook-registry-1.4.2", + ":socket2-0.5.7", + ], + ), + "linux-x86_64": dict( + deps = [ + ":libc-0.2.159", + ":signal-hook-registry-1.4.2", + ":socket2-0.5.7", + ], + ), + "macos-arm64": dict( + deps = [ + ":libc-0.2.159", + ":signal-hook-registry-1.4.2", + ":socket2-0.5.7", + ], + ), + "macos-x86_64": dict( + deps = [ + ":libc-0.2.159", + ":signal-hook-registry-1.4.2", + ":socket2-0.5.7", + ], + ), + "windows-gnu": dict( + deps = [ + ":socket2-0.5.7", + ":windows-sys-0.52.0", + ], + ), + "windows-msvc": dict( + deps = [ + ":socket2-0.5.7", + ":windows-sys-0.52.0", + ], + ), + }, + visibility = [], + deps = [ + ":bytes-1.7.1", + ":mio-1.0.2", + ":parking_lot-0.12.3", + ":pin-project-lite-0.2.14", + ":tokio-macros-2.4.0", + ], +) + +http_archive( + name = "tokio-macros-2.4.0.crate", + sha256 = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752", + strip_prefix = "tokio-macros-2.4.0", + urls = ["https://static.crates.io/crates/tokio-macros/2.4.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "tokio-macros-2.4.0", + srcs = [":tokio-macros-2.4.0.crate"], + crate = "tokio_macros", + crate_root = "tokio-macros-2.4.0.crate/src/lib.rs", + edition = "2021", + proc_macro = True, + visibility = [], + deps = [ + ":proc-macro2-1.0.87", + ":quote-1.0.37", + ":syn-2.0.79", + ], +) + +http_archive( + name = "tokio-util-0.6.10.crate", + sha256 = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507", + strip_prefix = "tokio-util-0.6.10", + urls = ["https://static.crates.io/crates/tokio-util/0.6.10/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "tokio-util-0.6.10", + srcs = [":tokio-util-0.6.10.crate"], + crate = "tokio_util", + crate_root = "tokio-util-0.6.10.crate/src/lib.rs", + edition = "2018", + features = [ + "codec", + "compat", + "default", + "full", + "futures-io", + "io", + "io-util", + "net", + "rt", + "slab", + "time", + ], + visibility = [], + deps = [ + ":bytes-1.7.1", + ":futures-core-0.3.31", + ":futures-io-0.3.31", + ":futures-sink-0.3.31", + ":log-0.4.22", + ":pin-project-lite-0.2.14", + ":slab-0.4.9", + ":tokio-1.40.0", + ], +) + +http_archive( + name = "toml-0.5.11.crate", + sha256 = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234", + strip_prefix = "toml-0.5.11", + urls = ["https://static.crates.io/crates/toml/0.5.11/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "toml-0.5.11", + srcs = [":toml-0.5.11.crate"], + crate = "toml", + crate_root = "toml-0.5.11.crate/src/lib.rs", + edition = "2018", + features = ["default"], + visibility = [], + deps = [":serde-1.0.208"], +) + +http_archive( + name = "toml_datetime-0.6.8.crate", + sha256 = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41", + strip_prefix = "toml_datetime-0.6.8", + urls = ["https://static.crates.io/crates/toml_datetime/0.6.8/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "toml_datetime-0.6.8", + srcs = [":toml_datetime-0.6.8.crate"], + crate = "toml_datetime", + crate_root = "toml_datetime-0.6.8.crate/src/lib.rs", + edition = "2021", + features = ["serde"], + visibility = [], + deps = [":serde-1.0.208"], +) + +alias( + name = "toml_edit", + actual = ":toml_edit-0.19.15", + visibility = ["PUBLIC"], +) + +http_archive( + name = "toml_edit-0.19.15.crate", + sha256 = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421", + strip_prefix = "toml_edit-0.19.15", + urls = ["https://static.crates.io/crates/toml_edit/0.19.15/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "toml_edit-0.19.15", + srcs = [":toml_edit-0.19.15.crate"], + crate = "toml_edit", + crate_root = "toml_edit-0.19.15.crate/src/lib.rs", + edition = "2021", + features = [ + "default", + "serde", + ], + visibility = [], + deps = [ + ":indexmap-2.6.0", + ":serde-1.0.208", + ":serde_spanned-0.6.7", + ":toml_datetime-0.6.8", + ":winnow-0.5.40", + ], +) + +alias( + name = "tracing", + actual = ":tracing-0.1.40", + visibility = ["PUBLIC"], +) + +http_archive( + name = "tracing-0.1.40.crate", + sha256 = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef", + strip_prefix = "tracing-0.1.40", + urls = ["https://static.crates.io/crates/tracing/0.1.40/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "tracing-0.1.40", + srcs = [":tracing-0.1.40.crate"], + crate = "tracing", + crate_root = "tracing-0.1.40.crate/src/lib.rs", + edition = "2018", + features = [ + "attributes", + "default", + "std", + "tracing-attributes", + ], + visibility = [], + deps = [ + ":pin-project-lite-0.2.14", + ":tracing-attributes-0.1.27", + ":tracing-core-0.1.32", + ], +) + +http_archive( + name = "tracing-attributes-0.1.27.crate", + sha256 = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7", + strip_prefix = "tracing-attributes-0.1.27", + urls = ["https://static.crates.io/crates/tracing-attributes/0.1.27/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "tracing-attributes-0.1.27", + srcs = [":tracing-attributes-0.1.27.crate"], + crate = "tracing_attributes", + crate_root = "tracing-attributes-0.1.27.crate/src/lib.rs", + edition = "2018", + proc_macro = True, + visibility = [], + deps = [ + ":proc-macro2-1.0.87", + ":quote-1.0.37", + ":syn-2.0.79", + ], +) + +alias( + name = "tracing-chrome", + actual = ":tracing-chrome-0.7.2", + visibility = ["PUBLIC"], +) + +http_archive( + name = "tracing-chrome-0.7.2.crate", + sha256 = "bf0a738ed5d6450a9fb96e86a23ad808de2b727fd1394585da5cdd6788ffe724", + strip_prefix = "tracing-chrome-0.7.2", + urls = ["https://static.crates.io/crates/tracing-chrome/0.7.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "tracing-chrome-0.7.2", + srcs = [":tracing-chrome-0.7.2.crate"], + crate = "tracing_chrome", + crate_root = "tracing-chrome-0.7.2.crate/src/lib.rs", + edition = "2018", + visibility = [], + deps = [ + ":serde_json-1.0.128", + ":tracing-core-0.1.32", + ":tracing-subscriber-0.3.18", + ], +) + +http_archive( + name = "tracing-core-0.1.32.crate", + sha256 = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54", + strip_prefix = "tracing-core-0.1.32", + urls = ["https://static.crates.io/crates/tracing-core/0.1.32/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "tracing-core-0.1.32", + srcs = [":tracing-core-0.1.32.crate"], + crate = "tracing_core", + crate_root = "tracing-core-0.1.32.crate/src/lib.rs", + edition = "2018", + features = [ + "default", + "once_cell", + "std", + "valuable", + ], + visibility = [], + deps = [":once_cell-1.20.2"], +) + +http_archive( + name = "tracing-log-0.2.0.crate", + sha256 = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3", + strip_prefix = "tracing-log-0.2.0", + urls = ["https://static.crates.io/crates/tracing-log/0.2.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "tracing-log-0.2.0", + srcs = [":tracing-log-0.2.0.crate"], + crate = "tracing_log", + crate_root = "tracing-log-0.2.0.crate/src/lib.rs", + edition = "2018", + features = [ + "log-tracer", + "std", + ], + visibility = [], + deps = [ + ":log-0.4.22", + ":once_cell-1.20.2", + ":tracing-core-0.1.32", + ], +) + +alias( + name = "tracing-subscriber", + actual = ":tracing-subscriber-0.3.18", + visibility = ["PUBLIC"], +) + +http_archive( + name = "tracing-subscriber-0.3.18.crate", + sha256 = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b", + strip_prefix = "tracing-subscriber-0.3.18", + urls = ["https://static.crates.io/crates/tracing-subscriber/0.3.18/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "tracing-subscriber-0.3.18", + srcs = [":tracing-subscriber-0.3.18.crate"], + crate = "tracing_subscriber", + crate_root = "tracing-subscriber-0.3.18.crate/src/lib.rs", + edition = "2018", + features = [ + "alloc", + "ansi", + "default", + "env-filter", + "fmt", + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "registry", + "sharded-slab", + "smallvec", + "std", + "thread_local", + "tracing", + "tracing-log", + ], + visibility = [], + deps = [ + ":matchers-0.1.0", + ":nu-ansi-term-0.46.0", + ":once_cell-1.20.2", + ":regex-1.11.0", + ":sharded-slab-0.1.7", + ":smallvec-1.13.2", + ":thread_local-1.1.8", + ":tracing-0.1.40", + ":tracing-core-0.1.32", + ":tracing-log-0.2.0", + ], +) + +http_archive( + name = "typenum-1.17.0.crate", + sha256 = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825", + strip_prefix = "typenum-1.17.0", + urls = ["https://static.crates.io/crates/typenum/1.17.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "typenum-1.17.0", + srcs = [":typenum-1.17.0.crate"], + crate = "typenum", + crate_root = "typenum-1.17.0.crate/src/lib.rs", + edition = "2018", + env = { + "OUT_DIR": "$(location :typenum-1.17.0-build-script-main-run[out_dir])", + }, + features = ["force_unix_path_separator"], + visibility = [], +) + +third_party_rust.rust_binary( + name = "typenum-1.17.0-build-script-main", + srcs = [":typenum-1.17.0.crate"], + crate = "build_script_main", + crate_root = "typenum-1.17.0.crate/build/main.rs", + edition = "2018", + features = ["force_unix_path_separator"], + visibility = [], +) + +third_party_rust.buildscript_run( + name = "typenum-1.17.0-build-script-main-run", + package_name = "typenum", + buildscript_rule = ":typenum-1.17.0-build-script-main", + features = ["force_unix_path_separator"], + version = "1.17.0", +) + +http_archive( + name = "ucd-trie-0.1.6.crate", + sha256 = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9", + strip_prefix = "ucd-trie-0.1.6", + urls = ["https://static.crates.io/crates/ucd-trie/0.1.6/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "ucd-trie-0.1.6", + srcs = [":ucd-trie-0.1.6.crate"], + crate = "ucd_trie", + crate_root = "ucd-trie-0.1.6.crate/src/lib.rs", + edition = "2021", + features = ["std"], + visibility = [], +) + +http_archive( + name = "uluru-3.1.0.crate", + sha256 = "7c8a2469e56e6e5095c82ccd3afb98dad95f7af7929aab6d8ba8d6e0f73657da", + strip_prefix = "uluru-3.1.0", + urls = ["https://static.crates.io/crates/uluru/3.1.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "uluru-3.1.0", + srcs = [":uluru-3.1.0.crate"], + crate = "uluru", + crate_root = "uluru-3.1.0.crate/src/lib.rs", + edition = "2021", + visibility = [], + deps = [":arrayvec-0.7.6"], +) + +http_archive( + name = "unicode-bidi-0.3.15.crate", + sha256 = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75", + strip_prefix = "unicode-bidi-0.3.15", + urls = ["https://static.crates.io/crates/unicode-bidi/0.3.15/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "unicode-bidi-0.3.15", + srcs = [":unicode-bidi-0.3.15.crate"], + crate = "unicode_bidi", + crate_root = "unicode-bidi-0.3.15.crate/src/lib.rs", + edition = "2018", + features = [ + "hardcoded-data", + "std", + ], + visibility = [], +) + +http_archive( + name = "unicode-bom-2.0.3.crate", + sha256 = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217", + strip_prefix = "unicode-bom-2.0.3", + urls = ["https://static.crates.io/crates/unicode-bom/2.0.3/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "unicode-bom-2.0.3", + srcs = [":unicode-bom-2.0.3.crate"], + crate = "unicode_bom", + crate_root = "unicode-bom-2.0.3.crate/src/lib.rs", + edition = "2018", + visibility = [], +) + +http_archive( + name = "unicode-ident-1.0.12.crate", + sha256 = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b", + strip_prefix = "unicode-ident-1.0.12", + urls = ["https://static.crates.io/crates/unicode-ident/1.0.12/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "unicode-ident-1.0.12", + srcs = [":unicode-ident-1.0.12.crate"], + crate = "unicode_ident", + crate_root = "unicode-ident-1.0.12.crate/src/lib.rs", + edition = "2018", + visibility = [], +) + +http_archive( + name = "unicode-linebreak-0.1.5.crate", + sha256 = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f", + strip_prefix = "unicode-linebreak-0.1.5", + urls = ["https://static.crates.io/crates/unicode-linebreak/0.1.5/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "unicode-linebreak-0.1.5", + srcs = [":unicode-linebreak-0.1.5.crate"], + crate = "unicode_linebreak", + crate_root = "unicode-linebreak-0.1.5.crate/src/lib.rs", + edition = "2021", + visibility = [], +) + +http_archive( + name = "unicode-normalization-0.1.23.crate", + sha256 = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5", + strip_prefix = "unicode-normalization-0.1.23", + urls = ["https://static.crates.io/crates/unicode-normalization/0.1.23/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "unicode-normalization-0.1.23", + srcs = [":unicode-normalization-0.1.23.crate"], + crate = "unicode_normalization", + crate_root = "unicode-normalization-0.1.23.crate/src/lib.rs", + edition = "2018", + features = ["std"], + visibility = [], + deps = [":tinyvec-1.8.0"], +) + +http_archive( + name = "unicode-segmentation-1.11.0.crate", + sha256 = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202", + strip_prefix = "unicode-segmentation-1.11.0", + urls = ["https://static.crates.io/crates/unicode-segmentation/1.11.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "unicode-segmentation-1.11.0", + srcs = [":unicode-segmentation-1.11.0.crate"], + crate = "unicode_segmentation", + crate_root = "unicode-segmentation-1.11.0.crate/src/lib.rs", + edition = "2018", + visibility = [], +) + +http_archive( + name = "unicode-truncate-1.1.0.crate", + sha256 = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf", + strip_prefix = "unicode-truncate-1.1.0", + urls = ["https://static.crates.io/crates/unicode-truncate/1.1.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "unicode-truncate-1.1.0", + srcs = [":unicode-truncate-1.1.0.crate"], + crate = "unicode_truncate", + crate_root = "unicode-truncate-1.1.0.crate/src/lib.rs", + edition = "2018", + features = [ + "default", + "std", + ], + visibility = [], + deps = [ + ":itertools-0.13.0", + ":unicode-segmentation-1.11.0", + ":unicode-width-0.1.14", + ], +) + +alias( + name = "unicode-width", + actual = ":unicode-width-0.1.14", + visibility = ["PUBLIC"], +) + +http_archive( + name = "unicode-width-0.1.14.crate", + sha256 = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af", + strip_prefix = "unicode-width-0.1.14", + urls = ["https://static.crates.io/crates/unicode-width/0.1.14/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "unicode-width-0.1.14", + srcs = [":unicode-width-0.1.14.crate"], + crate = "unicode_width", + crate_root = "unicode-width-0.1.14.crate/src/lib.rs", + edition = "2021", + features = [ + "cjk", + "default", + ], + visibility = [], +) + +http_archive( + name = "url-2.5.2.crate", + sha256 = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c", + strip_prefix = "url-2.5.2", + urls = ["https://static.crates.io/crates/url/2.5.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "url-2.5.2", + srcs = [":url-2.5.2.crate"], + crate = "url", + crate_root = "url-2.5.2.crate/src/lib.rs", + edition = "2018", + features = ["default"], + visibility = [], + deps = [ + ":form_urlencoded-1.2.1", + ":idna-0.5.0", + ":percent-encoding-2.3.1", + ], +) + +http_archive( + name = "utf8parse-0.2.2.crate", + sha256 = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821", + strip_prefix = "utf8parse-0.2.2", + urls = ["https://static.crates.io/crates/utf8parse/0.2.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "utf8parse-0.2.2", + srcs = [":utf8parse-0.2.2.crate"], + crate = "utf8parse", + crate_root = "utf8parse-0.2.2.crate/src/lib.rs", + edition = "2018", + features = ["default"], + visibility = [], +) + +alias( + name = "version_check", + actual = ":version_check-0.9.5", + visibility = ["PUBLIC"], +) + +http_archive( + name = "version_check-0.9.5.crate", + sha256 = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a", + strip_prefix = "version_check-0.9.5", + urls = ["https://static.crates.io/crates/version_check/0.9.5/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "version_check-0.9.5", + srcs = [":version_check-0.9.5.crate"], + crate = "version_check", + crate_root = "version_check-0.9.5.crate/src/lib.rs", + edition = "2015", + visibility = [], +) + +http_archive( + name = "wait-timeout-0.2.0.crate", + sha256 = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6", + strip_prefix = "wait-timeout-0.2.0", + urls = ["https://static.crates.io/crates/wait-timeout/0.2.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "wait-timeout-0.2.0", + srcs = [":wait-timeout-0.2.0.crate"], + crate = "wait_timeout", + crate_root = "wait-timeout-0.2.0.crate/src/lib.rs", + edition = "2015", + platform = { + "linux-arm64": dict( + deps = [":libc-0.2.159"], + ), + "linux-x86_64": dict( + deps = [":libc-0.2.159"], + ), + "macos-arm64": dict( + deps = [":libc-0.2.159"], + ), + "macos-x86_64": dict( + deps = [":libc-0.2.159"], + ), + }, + visibility = [], +) + +http_archive( + name = "walkdir-2.5.0.crate", + sha256 = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b", + strip_prefix = "walkdir-2.5.0", + urls = ["https://static.crates.io/crates/walkdir/2.5.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "walkdir-2.5.0", + srcs = [":walkdir-2.5.0.crate"], + crate = "walkdir", + crate_root = "walkdir-2.5.0.crate/src/lib.rs", + edition = "2018", + platform = { + "windows-gnu": dict( + deps = [":winapi-util-0.1.9"], + ), + "windows-msvc": dict( + deps = [":winapi-util-0.1.9"], + ), + }, + visibility = [], + deps = [":same-file-1.0.6"], +) + +alias( + name = "watchman_client", + actual = ":watchman_client-0.9.0", + visibility = ["PUBLIC"], +) + +http_archive( + name = "watchman_client-0.9.0.crate", + sha256 = "88bc4c9bb443a7aae10d4fa7807bffc397805315e2305288c90c80e2f66cfb52", + strip_prefix = "watchman_client-0.9.0", + urls = ["https://static.crates.io/crates/watchman_client/0.9.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "watchman_client-0.9.0", + srcs = [":watchman_client-0.9.0.crate"], + crate = "watchman_client", + crate_root = "watchman_client-0.9.0.crate/src/lib.rs", + edition = "2021", + platform = { + "windows-gnu": dict( + deps = [":winapi-0.3.9"], + ), + "windows-msvc": dict( + deps = [":winapi-0.3.9"], + ), + }, + visibility = [], + deps = [ + ":anyhow-1.0.89", + ":bytes-1.7.1", + ":futures-0.3.31", + ":maplit-1.0.2", + ":serde-1.0.208", + ":serde_bser-0.4.0", + ":thiserror-1.0.64", + ":tokio-1.40.0", + ":tokio-util-0.6.10", + ], +) + +alias( + name = "whoami", + actual = ":whoami-1.5.2", + visibility = ["PUBLIC"], +) + +http_archive( + name = "whoami-1.5.2.crate", + sha256 = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d", + strip_prefix = "whoami-1.5.2", + urls = ["https://static.crates.io/crates/whoami/1.5.2/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "whoami-1.5.2", + srcs = [":whoami-1.5.2.crate"], + crate = "whoami", + crate_root = "whoami-1.5.2.crate/src/lib.rs", + edition = "2018", + features = [ + "default", + "web", + "web-sys", + ], + visibility = [], +) + +http_archive( + name = "winapi-0.3.9.crate", + sha256 = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419", + strip_prefix = "winapi-0.3.9", + urls = ["https://static.crates.io/crates/winapi/0.3.9/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "winapi-0.3.9", + srcs = [":winapi-0.3.9.crate"], + crate = "winapi", + crate_root = "winapi-0.3.9.crate/src/lib.rs", + edition = "2015", + features = [ + "consoleapi", + "errhandlingapi", + "fileapi", + "handleapi", + "impl-default", + "processenv", + "synchapi", + "winbase", + "winerror", + "winuser", + ], + platform = { + "windows-gnu": dict( + rustc_flags = ["@$(location :winapi-0.3.9-build-script-run[rustc_flags])"], + deps = [":winapi-x86_64-pc-windows-gnu-0.4.0"], + ), + "windows-msvc": dict( + rustc_flags = ["@$(location :winapi-0.3.9-build-script-run[rustc_flags])"], + ), + }, + visibility = [], +) + +third_party_rust.rust_binary( + name = "winapi-0.3.9-build-script-build", + srcs = [":winapi-0.3.9.crate"], + crate = "build_script_build", + crate_root = "winapi-0.3.9.crate/build.rs", + edition = "2015", + features = [ + "consoleapi", + "errhandlingapi", + "fileapi", + "handleapi", + "impl-default", + "processenv", + "synchapi", + "winbase", + "winerror", + "winuser", + ], + visibility = [], +) + +third_party_rust.buildscript_run( + name = "winapi-0.3.9-build-script-run", + package_name = "winapi", + buildscript_rule = ":winapi-0.3.9-build-script-build", + features = [ + "consoleapi", + "errhandlingapi", + "fileapi", + "handleapi", + "impl-default", + "processenv", + "synchapi", + "winbase", + "winerror", + "winuser", + ], + version = "0.3.9", +) + +http_archive( + name = "winapi-util-0.1.9.crate", + sha256 = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb", + strip_prefix = "winapi-util-0.1.9", + urls = ["https://static.crates.io/crates/winapi-util/0.1.9/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "winapi-util-0.1.9", + srcs = [":winapi-util-0.1.9.crate"], + crate = "winapi_util", + crate_root = "winapi-util-0.1.9.crate/src/lib.rs", + edition = "2021", + platform = { + "windows-gnu": dict( + deps = [":windows-sys-0.59.0"], + ), + "windows-msvc": dict( + deps = [":windows-sys-0.59.0"], + ), + }, + visibility = [], +) + +http_archive( + name = "winapi-x86_64-pc-windows-gnu-0.4.0.crate", + sha256 = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f", + strip_prefix = "winapi-x86_64-pc-windows-gnu-0.4.0", + urls = ["https://static.crates.io/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "winapi-x86_64-pc-windows-gnu-0.4.0", + srcs = [":winapi-x86_64-pc-windows-gnu-0.4.0.crate"], + crate = "winapi_x86_64_pc_windows_gnu", + crate_root = "winapi-x86_64-pc-windows-gnu-0.4.0.crate/src/lib.rs", + edition = "2015", + visibility = [], +) + +http_archive( + name = "windows-core-0.52.0.crate", + sha256 = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9", + strip_prefix = "windows-core-0.52.0", + urls = ["https://static.crates.io/crates/windows-core/0.52.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "windows-core-0.52.0", + srcs = [":windows-core-0.52.0.crate"], + crate = "windows_core", + crate_root = "windows-core-0.52.0.crate/src/lib.rs", + edition = "2021", + features = ["default"], + visibility = [], + deps = [":windows-targets-0.52.6"], +) + +http_archive( + name = "windows-sys-0.48.0.crate", + sha256 = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9", + strip_prefix = "windows-sys-0.48.0", + urls = ["https://static.crates.io/crates/windows-sys/0.48.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "windows-sys-0.48.0", + srcs = [":windows-sys-0.48.0.crate"], + crate = "windows_sys", + crate_root = "windows-sys-0.48.0.crate/src/lib.rs", + edition = "2018", + features = [ + "Win32", + "Win32_Foundation", + "Win32_Globalization", + "Win32_Networking", + "Win32_Networking_WinSock", + "Win32_Security", + "Win32_Storage", + "Win32_Storage_FileSystem", + "Win32_System", + "Win32_System_Com", + "Win32_System_Console", + "Win32_System_Diagnostics", + "Win32_System_Diagnostics_Debug", + "Win32_System_IO", + "Win32_System_Pipes", + "Win32_System_Registry", + "Win32_System_SystemServices", + "Win32_System_Time", + "Win32_System_WindowsProgramming", + "Win32_UI", + "Win32_UI_Shell", + "default", + ], + visibility = [], + deps = [":windows-targets-0.48.5"], +) + +http_archive( + name = "windows-sys-0.52.0.crate", + sha256 = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d", + strip_prefix = "windows-sys-0.52.0", + urls = ["https://static.crates.io/crates/windows-sys/0.52.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "windows-sys-0.52.0", + srcs = [":windows-sys-0.52.0.crate"], + crate = "windows_sys", + crate_root = "windows-sys-0.52.0.crate/src/lib.rs", + edition = "2021", + features = [ + "Wdk", + "Wdk_Foundation", + "Wdk_Storage", + "Wdk_Storage_FileSystem", + "Wdk_System", + "Wdk_System_IO", + "Win32", + "Win32_Foundation", + "Win32_NetworkManagement", + "Win32_NetworkManagement_IpHelper", + "Win32_Networking", + "Win32_Networking_WinSock", + "Win32_Security", + "Win32_Security_Authorization", + "Win32_Storage", + "Win32_Storage_FileSystem", + "Win32_System", + "Win32_System_Com", + "Win32_System_Console", + "Win32_System_Diagnostics", + "Win32_System_Diagnostics_Debug", + "Win32_System_IO", + "Win32_System_Memory", + "Win32_System_Pipes", + "Win32_System_SystemServices", + "Win32_System_Threading", + "Win32_System_WindowsProgramming", + "Win32_UI", + "Win32_UI_Input", + "Win32_UI_Input_KeyboardAndMouse", + "Win32_UI_Shell", + "default", + ], + visibility = [], + deps = [":windows-targets-0.52.6"], +) + +http_archive( + name = "windows-sys-0.59.0.crate", + sha256 = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b", + strip_prefix = "windows-sys-0.59.0", + urls = ["https://static.crates.io/crates/windows-sys/0.59.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "windows-sys-0.59.0", + srcs = [":windows-sys-0.59.0.crate"], + crate = "windows_sys", + crate_root = "windows-sys-0.59.0.crate/src/lib.rs", + edition = "2021", + features = [ + "Win32", + "Win32_Foundation", + "Win32_Storage", + "Win32_Storage_FileSystem", + "Win32_System", + "Win32_System_Console", + "Win32_System_SystemInformation", + "Win32_System_Time", + "default", + ], + visibility = [], + deps = [":windows-targets-0.52.6"], +) + +http_archive( + name = "windows-targets-0.48.5.crate", + sha256 = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c", + strip_prefix = "windows-targets-0.48.5", + urls = ["https://static.crates.io/crates/windows-targets/0.48.5/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "windows-targets-0.48.5", + srcs = [":windows-targets-0.48.5.crate"], + crate = "windows_targets", + crate_root = "windows-targets-0.48.5.crate/src/lib.rs", + edition = "2018", + platform = { + "linux-arm64": dict( + rustc_flags = ["--cfg=windows_raw_dylib"], + ), + "linux-x86_64": dict( + rustc_flags = ["--cfg=windows_raw_dylib"], + deps = [":windows_x86_64_gnu-0.48.5"], + ), + "windows-gnu": dict( + rustc_flags = ["--cfg=windows_raw_dylib"], + deps = [":windows_x86_64_gnu-0.48.5"], + ), + "windows-msvc": dict( + rustc_flags = ["--cfg=windows_raw_dylib"], + deps = [":windows_x86_64_msvc-0.48.5"], + ), + }, + visibility = [], +) + +http_archive( + name = "windows-targets-0.52.6.crate", + sha256 = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973", + strip_prefix = "windows-targets-0.52.6", + urls = ["https://static.crates.io/crates/windows-targets/0.52.6/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "windows-targets-0.52.6", + srcs = [":windows-targets-0.52.6.crate"], + crate = "windows_targets", + crate_root = "windows-targets-0.52.6.crate/src/lib.rs", + edition = "2021", + platform = { + "linux-arm64": dict( + rustc_flags = ["--cfg=windows_raw_dylib"], + ), + "linux-x86_64": dict( + rustc_flags = ["--cfg=windows_raw_dylib"], + deps = [":windows_x86_64_gnu-0.52.6"], + ), + "windows-gnu": dict( + rustc_flags = ["--cfg=windows_raw_dylib"], + deps = [":windows_x86_64_gnu-0.52.6"], + ), + "windows-msvc": dict( + rustc_flags = ["--cfg=windows_raw_dylib"], + deps = [":windows_x86_64_msvc-0.52.6"], + ), + }, + visibility = [], +) + +http_archive( + name = "windows_x86_64_gnu-0.48.5.crate", + sha256 = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e", + strip_prefix = "windows_x86_64_gnu-0.48.5", + urls = ["https://static.crates.io/crates/windows_x86_64_gnu/0.48.5/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "windows_x86_64_gnu-0.48.5", + srcs = [":windows_x86_64_gnu-0.48.5.crate"], + crate = "windows_x86_64_gnu", + crate_root = "windows_x86_64_gnu-0.48.5.crate/src/lib.rs", + edition = "2018", + visibility = [], +) + +http_archive( + name = "windows_x86_64_gnu-0.52.6.crate", + sha256 = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78", + strip_prefix = "windows_x86_64_gnu-0.52.6", + urls = ["https://static.crates.io/crates/windows_x86_64_gnu/0.52.6/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "windows_x86_64_gnu-0.52.6", + srcs = [":windows_x86_64_gnu-0.52.6.crate"], + crate = "windows_x86_64_gnu", + crate_root = "windows_x86_64_gnu-0.52.6.crate/src/lib.rs", + edition = "2021", + visibility = [], +) + +http_archive( + name = "windows_x86_64_msvc-0.48.5.crate", + sha256 = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538", + strip_prefix = "windows_x86_64_msvc-0.48.5", + urls = ["https://static.crates.io/crates/windows_x86_64_msvc/0.48.5/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "windows_x86_64_msvc-0.48.5", + srcs = [":windows_x86_64_msvc-0.48.5.crate"], + crate = "windows_x86_64_msvc", + crate_root = "windows_x86_64_msvc-0.48.5.crate/src/lib.rs", + edition = "2018", + visibility = [], +) + +http_archive( + name = "windows_x86_64_msvc-0.52.6.crate", + sha256 = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec", + strip_prefix = "windows_x86_64_msvc-0.52.6", + urls = ["https://static.crates.io/crates/windows_x86_64_msvc/0.52.6/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "windows_x86_64_msvc-0.52.6", + srcs = [":windows_x86_64_msvc-0.52.6.crate"], + crate = "windows_x86_64_msvc", + crate_root = "windows_x86_64_msvc-0.52.6.crate/src/lib.rs", + edition = "2021", + visibility = [], +) + +http_archive( + name = "winnow-0.5.40.crate", + sha256 = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876", + strip_prefix = "winnow-0.5.40", + urls = ["https://static.crates.io/crates/winnow/0.5.40/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "winnow-0.5.40", + srcs = [":winnow-0.5.40.crate"], + crate = "winnow", + crate_root = "winnow-0.5.40.crate/src/lib.rs", + edition = "2021", + features = [ + "alloc", + "default", + "std", + ], + visibility = [], + deps = [":memchr-2.7.4"], +) + +http_archive( + name = "winnow-0.6.18.crate", + sha256 = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f", + strip_prefix = "winnow-0.6.18", + urls = ["https://static.crates.io/crates/winnow/0.6.18/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "winnow-0.6.18", + srcs = [":winnow-0.6.18.crate"], + crate = "winnow", + crate_root = "winnow-0.6.18.crate/src/lib.rs", + edition = "2021", + features = [ + "alloc", + "default", + "simd", + "std", + ], + visibility = [], + deps = [":memchr-2.7.4"], +) + +alias( + name = "winreg", + actual = ":winreg-0.52.0", + visibility = ["PUBLIC"], +) + +http_archive( + name = "winreg-0.52.0.crate", + sha256 = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5", + strip_prefix = "winreg-0.52.0", + urls = ["https://static.crates.io/crates/winreg/0.52.0/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "winreg-0.52.0", + srcs = [":winreg-0.52.0.crate"], + crate = "winreg", + crate_root = "winreg-0.52.0.crate/src/lib.rs", + edition = "2018", + visibility = [], + deps = [ + ":cfg-if-1.0.0", + ":windows-sys-0.48.0", + ], +) + +http_archive( + name = "yansi-1.0.1.crate", + sha256 = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049", + strip_prefix = "yansi-1.0.1", + urls = ["https://static.crates.io/crates/yansi/1.0.1/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "yansi-1.0.1", + srcs = [":yansi-1.0.1.crate"], + crate = "yansi", + crate_root = "yansi-1.0.1.crate/src/lib.rs", + edition = "2021", + features = [ + "alloc", + "default", + "std", + ], + visibility = [], +) + +http_archive( + name = "zerocopy-0.7.35.crate", + sha256 = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0", + strip_prefix = "zerocopy-0.7.35", + urls = ["https://static.crates.io/crates/zerocopy/0.7.35/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "zerocopy-0.7.35", + srcs = [":zerocopy-0.7.35.crate"], + crate = "zerocopy", + crate_root = "zerocopy-0.7.35.crate/src/lib.rs", + edition = "2018", + env = { + "CARGO_MANIFEST_DIR": "zerocopy-0.7.35.crate", + "CARGO_PKG_AUTHORS": "Joshua Liebow-Feeser ", + "CARGO_PKG_DESCRIPTION": "Utilities for zero-copy parsing and serialization", + "CARGO_PKG_NAME": "zerocopy", + "CARGO_PKG_REPOSITORY": "https://github.com/google/zerocopy", + "CARGO_PKG_VERSION": "0.7.35", + "CARGO_PKG_VERSION_MAJOR": "0", + "CARGO_PKG_VERSION_MINOR": "7", + "CARGO_PKG_VERSION_PATCH": "35", + }, + features = [ + "byteorder", + "default", + "derive", + "simd", + "zerocopy-derive", + ], + visibility = [], + deps = [ + ":byteorder-1.5.0", + ":zerocopy-derive-0.7.35", + ], +) + +http_archive( + name = "zerocopy-derive-0.7.35.crate", + sha256 = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e", + strip_prefix = "zerocopy-derive-0.7.35", + urls = ["https://static.crates.io/crates/zerocopy-derive/0.7.35/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "zerocopy-derive-0.7.35", + srcs = [":zerocopy-derive-0.7.35.crate"], + crate = "zerocopy_derive", + crate_root = "zerocopy-derive-0.7.35.crate/src/lib.rs", + edition = "2018", + proc_macro = True, + visibility = [], + deps = [ + ":proc-macro2-1.0.87", + ":quote-1.0.37", + ":syn-2.0.79", + ], +) + +alias( + name = "zstd", + actual = ":zstd-0.12.4", + visibility = ["PUBLIC"], +) + +http_archive( + name = "zstd-0.12.4.crate", + sha256 = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c", + strip_prefix = "zstd-0.12.4", + urls = ["https://static.crates.io/crates/zstd/0.12.4/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "zstd-0.12.4", + srcs = [":zstd-0.12.4.crate"], + crate = "zstd", + crate_root = "zstd-0.12.4.crate/src/lib.rs", + edition = "2018", + features = [ + "arrays", + "default", + "legacy", + "zdict_builder", + ], + visibility = [], + deps = [":zstd-safe-6.0.6"], +) + +http_archive( + name = "zstd-safe-6.0.6.crate", + sha256 = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581", + strip_prefix = "zstd-safe-6.0.6", + urls = ["https://static.crates.io/crates/zstd-safe/6.0.6/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "zstd-safe-6.0.6", + srcs = [":zstd-safe-6.0.6.crate"], + crate = "zstd_safe", + crate_root = "zstd-safe-6.0.6.crate/src/lib.rs", + edition = "2018", + features = [ + "arrays", + "legacy", + "std", + "zdict_builder", + ], + visibility = [], + deps = [ + ":libc-0.2.159", + ":zstd-sys-2.0.13+zstd.1.5.6", + ], +) + +http_archive( + name = "zstd-sys-2.0.13+zstd.1.5.6.crate", + sha256 = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa", + strip_prefix = "zstd-sys-2.0.13+zstd.1.5.6", + urls = ["https://static.crates.io/crates/zstd-sys/2.0.13+zstd.1.5.6/download"], + visibility = [], +) + +third_party_rust.rust_library( + name = "zstd-sys-2.0.13+zstd.1.5.6", + srcs = [":zstd-sys-2.0.13+zstd.1.5.6.crate"], + crate = "zstd_sys", + crate_root = "zstd-sys-2.0.13+zstd.1.5.6.crate/src/lib.rs", + edition = "2018", + features = [ + "legacy", + "std", + "zdict_builder", + ], + visibility = [], + deps = ["third-party//zstd:zstd"], ) diff --git a/buck/third-party/rust/Cargo.lock b/buck/third-party/rust/Cargo.lock index 88251bd9a7..52f9e97e0f 100644 --- a/buck/third-party/rust/Cargo.lock +++ b/buck/third-party/rust/Cargo.lock @@ -2,6 +2,220 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "addr2line" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "getrandom", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anes" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" + +[[package]] +name = "anstream" +version = "0.6.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" + +[[package]] +name = "anstyle-parse" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + +[[package]] +name = "anyhow" +version = "1.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" + +[[package]] +name = "arc-swap" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "assert_cmd" +version = "2.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1835b7f27878de8525dc71410b5a31cdcc5f230aed5ba5df968e09c201b23d" +dependencies = [ + "anstyle", + "bstr", + "doc-comment", + "libc", + "predicates", + "predicates-core", + "predicates-tree", + "wait-timeout", +] + +[[package]] +name = "assert_matches" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" + +[[package]] +name = "async-trait" +version = "0.1.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + +[[package]] +name = "backoff" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" +dependencies = [ + "getrandom", + "instant", + "rand", +] + +[[package]] +name = "backtrace" +version = "0.3.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide 0.7.4", + "object", + "rustc-demangle", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + [[package]] name = "blake2" version = "0.10.6" @@ -21,57 +235,3533 @@ dependencies = [ ] [[package]] -name = "crypto-common" -version = "0.1.6" +name = "bstr" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" dependencies = [ - "generic-array", - "typenum", + "memchr", + "regex-automata 0.4.8", + "serde", ] [[package]] -name = "digest" -version = "0.10.7" +name = "bumpalo" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" dependencies = [ - "block-buffer", - "crypto-common", - "subtle", + "serde", ] [[package]] -name = "generic-array" -version = "0.14.7" +name = "cassowary" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" + +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + +[[package]] +name = "castaway" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5" dependencies = [ - "typenum", - "version_check", + "rustversion", ] [[package]] -name = "rust-third-party" -version = "0.0.0" +name = "cc" +version = "1.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d2eb3cd3d1bf4529e31c215ee6f93ec5a3d536d9f578f93d9d33ee19562932" dependencies = [ - "blake2", + "jobserver", + "libc", + "shlex", ] [[package]] -name = "subtle" -version = "2.5.0" +name = "cfg-if" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] -name = "typenum" -version = "1.17.0" +name = "chrono" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "wasm-bindgen", + "windows-targets 0.52.6", +] [[package]] -name = "version_check" -version = "0.9.4" +name = "chrono-english" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f73d909da7eb4a7d88c679c3f5a1bc09d965754e0adb2e7627426cef96a00d6f" +dependencies = [ + "chrono", + "scanlex", +] + +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + +[[package]] +name = "clap" +version = "4.5.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap-markdown" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ebc67e6266e14f8b31541c2f204724fa2ac7ad5c17d6f5908fbb92a60f42cff" +dependencies = [ + "clap", +] + +[[package]] +name = "clap_builder" +version = "4.5.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", + "terminal_size", +] + +[[package]] +name = "clap_complete" +version = "4.5.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9646e2e245bf62f45d39a0f3f36f1171ad1ea0d6967fd114bca72cb02a8fcdfb" +dependencies = [ + "clap", +] + +[[package]] +name = "clap_complete_nushell" +version = "4.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "315902e790cc6e5ddd20cbd313c1d0d49db77f191e149f96397230fb82a17677" +dependencies = [ + "clap", + "clap_complete", +] + +[[package]] +name = "clap_derive" +version = "4.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" + +[[package]] +name = "clap_mangen" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17415fd4dfbea46e3274fcd8d368284519b358654772afb700dc2e8d2b24eeb" +dependencies = [ + "clap", + "roff", +] + +[[package]] +name = "clru" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbd0f76e066e64fdc5631e3bb46381254deab9ef1158292f27c8c57e3bf3fe59" + +[[package]] +name = "colorchoice" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" + +[[package]] +name = "compact_str" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f86b9c4c00838774a6d902ef931eff7470720c51d90c2e32cfe15dc304737b3f" +dependencies = [ + "castaway", + "cfg-if", + "itoa", + "ryu", + "static_assertions", +] + +[[package]] +name = "config" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23738e11972c7643e4ec947840fc463b6a571afcd3e735bdfce7d03c7a784aca" +dependencies = [ + "async-trait", + "lazy_static", + "nom", + "pathdiff", + "serde", + "toml", +] + +[[package]] +name = "console" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "criterion" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" +dependencies = [ + "anes", + "cast", + "ciborium", + "clap", + "criterion-plot", + "is-terminal", + "itertools 0.10.5", + "num-traits", + "once_cell", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_derive", + "serde_json", + "tinytemplate", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +dependencies = [ + "cast", + "itertools 0.10.5", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "crossterm" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" +dependencies = [ + "bitflags 2.6.0", + "crossterm_winapi", + "libc", + "mio 0.8.11", + "parking_lot", + "signal-hook", + "signal-hook-mio", + "winapi", +] + +[[package]] +name = "crossterm_winapi" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" +dependencies = [ + "winapi", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "dashmap" +version = "6.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "804c8821570c3f8b70230c2ba75ffa5c0f9a4189b9a432b6656c536712acae28" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + +[[package]] +name = "difflib" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "doc-comment" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + +[[package]] +name = "encoding_rs" +version = "0.8.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "esl01-renderdag" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a1840969ab8be31e186bb6d2f672d586dcd203dd4019a80dc1277a14686eca9" +dependencies = [ + "bitflags 1.3.2", + "itertools 0.10.5", +] + +[[package]] +name = "faster-hex" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2a2b11eda1d40935b26cf18f6833c526845ae8c41e58d09af6adeb6f0269183" + +[[package]] +name = "fastrand" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" + +[[package]] +name = "filetime" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf401df4a4e3872c4fe8151134cf483738e74b67fc934d6532c882b3d24a4550" +dependencies = [ + "cfg-if", + "libc", + "libredox", + "windows-sys 0.59.0", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.0.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c0596c1eac1f9e04ed902702e9878208b336edc9d6fddc8a48387349bab3666" +dependencies = [ + "crc32fast", + "miniz_oxide 0.8.0", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures 0.1.31", + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "gimli" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" + +[[package]] +name = "git2" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" +dependencies = [ + "bitflags 2.6.0", + "libc", + "libgit2-sys", + "log", + "openssl-probe", + "openssl-sys", + "url", +] + +[[package]] +name = "gix" +version = "0.66.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9048b8d1ae2104f045cb37e5c450fc49d5d8af22609386bfc739c11ba88995eb" +dependencies = [ + "gix-actor", + "gix-attributes", + "gix-command", + "gix-commitgraph", + "gix-config", + "gix-date", + "gix-diff", + "gix-discover", + "gix-features", + "gix-filter", + "gix-fs", + "gix-glob", + "gix-hash", + "gix-hashtable", + "gix-ignore", + "gix-index", + "gix-lock", + "gix-object", + "gix-odb", + "gix-pack", + "gix-path", + "gix-pathspec", + "gix-ref", + "gix-refspec", + "gix-revision", + "gix-revwalk", + "gix-sec", + "gix-submodule", + "gix-tempfile", + "gix-trace", + "gix-traverse", + "gix-url", + "gix-utils", + "gix-validate", + "gix-worktree", + "once_cell", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-actor" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc19e312cd45c4a66cd003f909163dc2f8e1623e30a0c0c6df3776e89b308665" +dependencies = [ + "bstr", + "gix-date", + "gix-utils", + "itoa", + "thiserror", + "winnow 0.6.18", +] + +[[package]] +name = "gix-attributes" +version = "0.22.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebccbf25aa4a973dd352564a9000af69edca90623e8a16dad9cbc03713131311" +dependencies = [ + "bstr", + "gix-glob", + "gix-path", + "gix-quote", + "gix-trace", + "kstring", + "smallvec", + "thiserror", + "unicode-bom", +] + +[[package]] +name = "gix-bitmap" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a371db66cbd4e13f0ed9dc4c0fea712d7276805fccc877f77e96374d317e87ae" +dependencies = [ + "thiserror", +] + +[[package]] +name = "gix-chunk" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45c8751169961ba7640b513c3b24af61aa962c967aaf04116734975cd5af0c52" +dependencies = [ + "thiserror", +] + +[[package]] +name = "gix-command" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff2e692b36bbcf09286c70803006ca3fd56551a311de450be317a0ab8ea92e7" +dependencies = [ + "bstr", + "gix-path", + "gix-trace", + "shell-words", +] + +[[package]] +name = "gix-commitgraph" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "133b06f67f565836ec0c473e2116a60fb74f80b6435e21d88013ac0e3c60fc78" +dependencies = [ + "bstr", + "gix-chunk", + "gix-features", + "gix-hash", + "memmap2", + "thiserror", +] + +[[package]] +name = "gix-config" +version = "0.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78e797487e6ca3552491de1131b4f72202f282fb33f198b1c34406d765b42bb0" +dependencies = [ + "bstr", + "gix-config-value", + "gix-features", + "gix-glob", + "gix-path", + "gix-ref", + "gix-sec", + "memchr", + "once_cell", + "smallvec", + "thiserror", + "unicode-bom", + "winnow 0.6.18", +] + +[[package]] +name = "gix-config-value" +version = "0.14.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03f76169faa0dec598eac60f83d7fcdd739ec16596eca8fb144c88973dbe6f8c" +dependencies = [ + "bitflags 2.6.0", + "bstr", + "gix-path", + "libc", + "thiserror", +] + +[[package]] +name = "gix-date" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35c84b7af01e68daf7a6bb8bb909c1ff5edb3ce4326f1f43063a5a96d3c3c8a5" +dependencies = [ + "bstr", + "itoa", + "jiff", + "thiserror", +] + +[[package]] +name = "gix-diff" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92c9afd80fff00f8b38b1c1928442feb4cd6d2232a6ed806b6b193151a3d336c" +dependencies = [ + "bstr", + "gix-command", + "gix-filter", + "gix-fs", + "gix-hash", + "gix-object", + "gix-path", + "gix-tempfile", + "gix-trace", + "gix-worktree", + "imara-diff", + "thiserror", +] + +[[package]] +name = "gix-discover" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0577366b9567376bc26e815fd74451ebd0e6218814e242f8e5b7072c58d956d2" +dependencies = [ + "bstr", + "dunce", + "gix-fs", + "gix-hash", + "gix-path", + "gix-ref", + "gix-sec", + "thiserror", +] + +[[package]] +name = "gix-features" +version = "0.38.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac7045ac9fe5f9c727f38799d002a7ed3583cd777e3322a7c4b43e3cf437dc69" +dependencies = [ + "crc32fast", + "crossbeam-channel", + "flate2", + "gix-hash", + "gix-trace", + "gix-utils", + "libc", + "once_cell", + "parking_lot", + "prodash", + "sha1_smol", + "thiserror", + "walkdir", +] + +[[package]] +name = "gix-filter" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4121790ae140066e5b953becc72e7496278138d19239be2e63b5067b0843119e" +dependencies = [ + "bstr", + "encoding_rs", + "gix-attributes", + "gix-command", + "gix-hash", + "gix-object", + "gix-packetline-blocking", + "gix-path", + "gix-quote", + "gix-trace", + "gix-utils", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-fs" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2bfe6249cfea6d0c0e0990d5226a4cb36f030444ba9e35e0639275db8f98575" +dependencies = [ + "fastrand", + "gix-features", + "gix-utils", +] + +[[package]] +name = "gix-glob" +version = "0.16.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74908b4bbc0a0a40852737e5d7889f676f081e340d5451a16e5b4c50d592f111" +dependencies = [ + "bitflags 2.6.0", + "bstr", + "gix-features", + "gix-path", +] + +[[package]] +name = "gix-hash" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93d7df7366121b5018f947a04d37f034717e113dcf9ccd85c34b58e57a74d5e" +dependencies = [ + "faster-hex", + "thiserror", +] + +[[package]] +name = "gix-hashtable" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ddf80e16f3c19ac06ce415a38b8591993d3f73aede049cb561becb5b3a8e242" +dependencies = [ + "gix-hash", + "hashbrown 0.14.5", + "parking_lot", +] + +[[package]] +name = "gix-ignore" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e447cd96598460f5906a0f6c75e950a39f98c2705fc755ad2f2020c9e937fab7" +dependencies = [ + "bstr", + "gix-glob", + "gix-path", + "gix-trace", + "unicode-bom", +] + +[[package]] +name = "gix-index" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cd4203244444017682176e65fd0180be9298e58ed90bd4a8489a357795ed22d" +dependencies = [ + "bitflags 2.6.0", + "bstr", + "filetime", + "fnv", + "gix-bitmap", + "gix-features", + "gix-fs", + "gix-hash", + "gix-lock", + "gix-object", + "gix-traverse", + "gix-utils", + "gix-validate", + "hashbrown 0.14.5", + "itoa", + "libc", + "memmap2", + "rustix", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-lock" +version = "14.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bc7fe297f1f4614774989c00ec8b1add59571dc9b024b4c00acb7dedd4e19d" +dependencies = [ + "gix-tempfile", + "gix-utils", + "thiserror", +] + +[[package]] +name = "gix-object" +version = "0.44.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f5b801834f1de7640731820c2df6ba88d95480dc4ab166a5882f8ff12b88efa" +dependencies = [ + "bstr", + "gix-actor", + "gix-date", + "gix-features", + "gix-hash", + "gix-utils", + "gix-validate", + "itoa", + "smallvec", + "thiserror", + "winnow 0.6.18", +] + +[[package]] +name = "gix-odb" +version = "0.63.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3158068701c17df54f0ab2adda527f5a6aca38fd5fd80ceb7e3c0a2717ec747" +dependencies = [ + "arc-swap", + "gix-date", + "gix-features", + "gix-fs", + "gix-hash", + "gix-object", + "gix-pack", + "gix-path", + "gix-quote", + "parking_lot", + "tempfile", + "thiserror", +] + +[[package]] +name = "gix-pack" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3223aa342eee21e1e0e403cad8ae9caf9edca55ef84c347738d10681676fd954" +dependencies = [ + "clru", + "gix-chunk", + "gix-features", + "gix-hash", + "gix-hashtable", + "gix-object", + "gix-path", + "memmap2", + "smallvec", + "thiserror", + "uluru", +] + +[[package]] +name = "gix-packetline-blocking" +version = "0.17.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9802304baa798dd6f5ff8008a2b6516d54b74a69ca2d3a2b9e2d6c3b5556b40" +dependencies = [ + "bstr", + "faster-hex", + "gix-trace", + "thiserror", +] + +[[package]] +name = "gix-path" +version = "0.10.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d5b8722112fa2fa87135298780bc833b0e9f6c56cc82795d209804b3a03484" +dependencies = [ + "bstr", + "gix-trace", + "home", + "once_cell", + "thiserror", +] + +[[package]] +name = "gix-pathspec" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d23bf239532b4414d0e63b8ab3a65481881f7237ed9647bb10c1e3cc54c5ceb" +dependencies = [ + "bitflags 2.6.0", + "bstr", + "gix-attributes", + "gix-config-value", + "gix-glob", + "gix-path", + "thiserror", +] + +[[package]] +name = "gix-quote" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbff4f9b9ea3fa7a25a70ee62f545143abef624ac6aa5884344e70c8b0a1d9ff" +dependencies = [ + "bstr", + "gix-utils", + "thiserror", +] + +[[package]] +name = "gix-ref" +version = "0.47.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae0d8406ebf9aaa91f55a57f053c5a1ad1a39f60fdf0303142b7be7ea44311e5" +dependencies = [ + "gix-actor", + "gix-features", + "gix-fs", + "gix-hash", + "gix-lock", + "gix-object", + "gix-path", + "gix-tempfile", + "gix-utils", + "gix-validate", + "memmap2", + "thiserror", + "winnow 0.6.18", +] + +[[package]] +name = "gix-refspec" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebb005f82341ba67615ffdd9f7742c87787544441c88090878393d0682869ca6" +dependencies = [ + "bstr", + "gix-hash", + "gix-revision", + "gix-validate", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-revision" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba4621b219ac0cdb9256883030c3d56a6c64a6deaa829a92da73b9a576825e1e" +dependencies = [ + "bstr", + "gix-date", + "gix-hash", + "gix-object", + "gix-revwalk", + "thiserror", +] + +[[package]] +name = "gix-revwalk" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b41e72544b93084ee682ef3d5b31b1ba4d8fa27a017482900e5e044d5b1b3984" +dependencies = [ + "gix-commitgraph", + "gix-date", + "gix-hash", + "gix-hashtable", + "gix-object", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-sec" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fe4d52f30a737bbece5276fab5d3a8b276dc2650df963e293d0673be34e7a5f" +dependencies = [ + "bitflags 2.6.0", + "gix-path", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "gix-submodule" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "529d0af78cc2f372b3218f15eb1e3d1635a21c8937c12e2dd0b6fc80c2ca874b" +dependencies = [ + "bstr", + "gix-config", + "gix-path", + "gix-pathspec", + "gix-refspec", + "gix-url", + "thiserror", +] + +[[package]] +name = "gix-tempfile" +version = "14.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046b4927969fa816a150a0cda2e62c80016fe11fb3c3184e4dddf4e542f108aa" +dependencies = [ + "dashmap", + "gix-fs", + "libc", + "once_cell", + "parking_lot", + "tempfile", +] + +[[package]] +name = "gix-trace" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f924267408915fddcd558e3f37295cc7d6a3e50f8bd8b606cee0808c3915157e" + +[[package]] +name = "gix-traverse" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "030da39af94e4df35472e9318228f36530989327906f38e27807df305fccb780" +dependencies = [ + "bitflags 2.6.0", + "gix-commitgraph", + "gix-date", + "gix-hash", + "gix-hashtable", + "gix-object", + "gix-revwalk", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-url" +version = "0.27.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd280c5e84fb22e128ed2a053a0daeacb6379469be6a85e3d518a0636e160c89" +dependencies = [ + "bstr", + "gix-features", + "gix-path", + "home", + "thiserror", + "url", +] + +[[package]] +name = "gix-utils" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35192df7fd0fa112263bad8021e2df7167df4cc2a6e6d15892e1e55621d3d4dc" +dependencies = [ + "fastrand", + "unicode-normalization", +] + +[[package]] +name = "gix-validate" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81f2badbb64e57b404593ee26b752c26991910fd0d81fe6f9a71c1a8309b6c86" +dependencies = [ + "bstr", + "thiserror", +] + +[[package]] +name = "gix-worktree" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c312ad76a3f2ba8e865b360d5cb3aa04660971d16dec6dd0ce717938d903149a" +dependencies = [ + "bstr", + "gix-attributes", + "gix-features", + "gix-fs", + "gix-glob", + "gix-hash", + "gix-ignore", + "gix-index", + "gix-object", + "gix-path", + "gix-validate", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "globset" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", +] + +[[package]] +name = "half" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +dependencies = [ + "cfg-if", + "crunchy", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", +] + +[[package]] +name = "hashbrown" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "ignore" +version = "0.4.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" +dependencies = [ + "crossbeam-deque", + "globset", + "log", + "memchr", + "regex-automata 0.4.8", + "same-file", + "walkdir", + "winapi-util", +] + +[[package]] +name = "imara-diff" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc9da1a252bd44cd341657203722352efc9bc0c847d06ea6d2dc1cd1135e0a01" +dependencies = [ + "ahash", + "hashbrown 0.14.5", +] + +[[package]] +name = "indexmap" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +dependencies = [ + "equivalent", + "hashbrown 0.15.0", +] + +[[package]] +name = "indoc" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" + +[[package]] +name = "insta" +version = "1.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6593a41c7a73841868772495db7dc1e8ecab43bb5c0b6da2059246c4b506ab60" +dependencies = [ + "console", + "lazy_static", + "linked-hash-map", + "regex", + "similar", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "is-terminal" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" +dependencies = [ + "hermit-abi 0.4.0", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "jiff" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2b7379a75544c94b3da32821b0bf41f9062e9970e23b78cc577d0d89676d16" +dependencies = [ + "jiff-tzdb-platform", + "windows-sys 0.59.0", +] + +[[package]] +name = "jiff-tzdb" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05fac328b3df1c0f18a3c2ab6cb7e06e4e549f366017d796e3e66b6d6889abe6" + +[[package]] +name = "jiff-tzdb-platform" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8da387d5feaf355954c2c122c194d6df9c57d865125a67984bb453db5336940" +dependencies = [ + "jiff-tzdb", +] + +[[package]] +name = "jobserver" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "kstring" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "558bf9508a558512042d3095138b1f7b8fe90c5467d94f9f1da28b3731c5dbd1" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.159" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" + +[[package]] +name = "libgit2-sys" +version = "0.17.0+1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10472326a8a6477c3c20a64547b0059e4b0d086869eee31e6d7da728a8eb7224" +dependencies = [ + "cc", + "libc", + "libssh2-sys", + "libz-sys", + "openssl-sys", + "pkg-config", +] + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.6.0", + "libc", + "redox_syscall", +] + +[[package]] +name = "libssh2-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee" +dependencies = [ + "cc", + "libc", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "libz-sys" +version = "1.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc53a7799a7496ebc9fd29f31f7df80e83c9bda5299768af5f9e59eeea74647" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "lru" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" +dependencies = [ + "hashbrown 0.14.5", +] + +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memmap2" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +dependencies = [ + "libc", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +dependencies = [ + "adler", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", +] + +[[package]] +name = "minus" +version = "5.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093bd0520d2a37943566a73750e6d44094dac75d66a978d1f0d97ffc78686832" +dependencies = [ + "crossbeam-channel", + "crossterm", + "once_cell", + "parking_lot", + "regex", + "textwrap", + "thiserror", +] + +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.48.0", +] + +[[package]] +name = "mio" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "wasi", + "windows-sys 0.52.0", +] + +[[package]] +name = "multimap" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi 0.3.9", + "libc", +] + +[[package]] +name = "object" +version = "0.36.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +dependencies = [ + "parking_lot_core", +] + +[[package]] +name = "oorandom" +version = "11.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pest" +version = "2.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d3a6e3394ec80feb3b6393c725571754c6188490265c61aaf260810d6b95aa0" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94429506bde1ca69d1b5601962c73f4172ab4726571a59ea95931218cb0e930e" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pest_meta" +version = "2.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac8a071862e93690b6e34e9a5fb8e33ff3734473ac0245b27232222c4906a33f" +dependencies = [ + "once_cell", + "pest", + "sha2", +] + +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset", + "indexmap", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "plotters" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7" + +[[package]] +name = "plotters-svg" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705" +dependencies = [ + "plotters-backend", +] + +[[package]] +name = "pollster" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "predicates" +version = "3.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97" +dependencies = [ + "anstyle", + "difflib", + "predicates-core", +] + +[[package]] +name = "predicates-core" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931" + +[[package]] +name = "predicates-tree" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13" +dependencies = [ + "predicates-core", + "termtree", +] + +[[package]] +name = "pretty_assertions" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d" +dependencies = [ + "diff", + "yansi", +] + +[[package]] +name = "prettyplease" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +dependencies = [ + "proc-macro2", + "syn", +] + +[[package]] +name = "proc-macro2" +version = "1.0.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3e4daa0dcf6feba26f985457cdf104d4b4256fc5a09547140f3631bb076b19a" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prodash" +version = "28.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "744a264d26b88a6a7e37cbad97953fa233b94d585236310bcbc88474b4092d79" + +[[package]] +name = "prost" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-build" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4" +dependencies = [ + "bytes", + "heck", + "itertools 0.12.1", + "log", + "multimap", + "once_cell", + "petgraph", + "prettyplease", + "prost", + "prost-types", + "regex", + "syn", + "tempfile", +] + +[[package]] +name = "prost-derive" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" +dependencies = [ + "anyhow", + "itertools 0.12.1", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "prost-types" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0" +dependencies = [ + "prost", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "ratatui" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f44c9e68fd46eda15c646fbb85e1040b657a58cdc8c98db1d97a55930d991eef" +dependencies = [ + "bitflags 2.6.0", + "cassowary", + "compact_str", + "crossterm", + "itertools 0.12.1", + "lru", + "paste", + "stability", + "strum", + "unicode-segmentation", + "unicode-truncate", + "unicode-width", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom", + "libredox", + "thiserror", +] + +[[package]] +name = "ref-cast" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "regex" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "roff" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88f8660c1ff60292143c98d08fc6e2f654d722db50410e3f3797d40baaf9d8f3" + +[[package]] +name = "rpassword" +version = "7.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f" +dependencies = [ + "libc", + "rtoolbox", + "windows-sys 0.48.0", +] + +[[package]] +name = "rtoolbox" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "rust-third-party" +version = "0.0.0" +dependencies = [ + "anyhow", + "assert_cmd", + "assert_matches", + "async-trait", + "backoff", + "blake2", + "bstr", + "chrono", + "chrono-english", + "clap", + "clap-markdown", + "clap_complete", + "clap_complete_nushell", + "clap_mangen", + "clru", + "config", + "criterion", + "crossterm", + "digest", + "dirs", + "dunce", + "either", + "esl01-renderdag", + "futures 0.3.31", + "git2", + "gix", + "gix-filter", + "glob", + "hashbrown 0.15.0", + "hex", + "ignore", + "indexmap", + "indoc", + "insta", + "itertools 0.13.0", + "libc", + "maplit", + "minus", + "num_cpus", + "once_cell", + "pest", + "pest_derive", + "pollster", + "pretty_assertions", + "proc-macro2", + "prost", + "prost-build", + "quote", + "rand", + "rand_chacha", + "rayon", + "ref-cast", + "regex", + "rpassword", + "rustix", + "scm-record", + "serde", + "serde_json", + "slab", + "smallvec", + "strsim", + "syn", + "tempfile", + "test-case", + "textwrap", + "thiserror", + "timeago", + "tokio", + "toml_edit", + "tracing", + "tracing-chrome", + "tracing-subscriber", + "unicode-width", + "version_check", + "watchman_client", + "whoami", + "winreg", + "zstd", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustix" +version = "0.38.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustversion" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scanlex" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "088c5d71572124929ea7549a8ce98e1a6fd33d0a38367b09027b382e67c033db" + +[[package]] +name = "scm-record" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1bf431016c7a34038f440696c672f0fee1a15d6aea31fe100df6974a35bf5f" +dependencies = [ + "cassowary", + "crossterm", + "num-traits", + "ratatui", + "serde", + "serde_json", + "thiserror", + "tracing", + "unicode-width", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "serde" +version = "1.0.208" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bser" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56b4bcc15e42e5b5ae16c6f75582bef80d36c6ffe2c03b1b5317754b38f8717" +dependencies = [ + "anyhow", + "byteorder", + "bytes", + "serde", + "serde_bytes", + "thiserror", +] + +[[package]] +name = "serde_bytes" +version = "0.11.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.208" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.128" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +dependencies = [ + "serde", +] + +[[package]] +name = "sha1_smol" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-mio" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" +dependencies = [ + "libc", + "mio 0.8.11", + "signal-hook", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "similar" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "smawk" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" + +[[package]] +name = "socket2" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "stability" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tempfile" +version = "3.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +dependencies = [ + "cfg-if", + "fastrand", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "terminal_size" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f599bd7ca042cfdf8f4512b277c02ba102247820f9d9d4a9f521f496751a6ef" +dependencies = [ + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "termtree" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" + +[[package]] +name = "test-case" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" +dependencies = [ + "test-case-macros", +] + +[[package]] +name = "test-case-core" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" +dependencies = [ + "cfg-if", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "test-case-macros" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "test-case-core", +] + +[[package]] +name = "textwrap" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" +dependencies = [ + "smawk", + "unicode-linebreak", + "unicode-width", +] + +[[package]] +name = "thiserror" +version = "1.0.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "timeago" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1710e589de0a76aaf295cd47a6699f6405737dbfd3cf2b75c92d000b548d0e6" + +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "tinyvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio 1.0.2", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-util" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" +dependencies = [ + "bytes", + "futures-core", + "futures-io", + "futures-sink", + "log", + "pin-project-lite", + "slab", + "tokio", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-chrome" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf0a738ed5d6450a9fb96e86a23ad808de2b727fd1394585da5cdd6788ffe724" +dependencies = [ + "serde_json", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "uluru" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c8a2469e56e6e5095c82ccd3afb98dad95f7af7929aab6d8ba8d6e0f73657da" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-bom" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-linebreak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + +[[package]] +name = "unicode-truncate" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf" +dependencies = [ + "itertools 0.13.0", + "unicode-segmentation", + "unicode-width", +] + +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "url" +version = "2.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +dependencies = [ + "cfg-if", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" + +[[package]] +name = "watchman_client" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88bc4c9bb443a7aae10d4fa7807bffc397805315e2305288c90c80e2f66cfb52" +dependencies = [ + "anyhow", + "bytes", + "futures 0.3.31", + "maplit", + "serde", + "serde_bser", + "thiserror", + "tokio", + "tokio-util", + "winapi", +] + +[[package]] +name = "web-sys" +version = "0.3.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "whoami" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" +dependencies = [ + "redox_syscall", + "wasite", + "web-sys", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zstd" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "6.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.13+zstd.1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/buck/third-party/rust/Cargo.toml b/buck/third-party/rust/Cargo.toml index 0d73a0d2c7..f994d1b7bb 100644 --- a/buck/third-party/rust/Cargo.toml +++ b/buck/third-party/rust/Cargo.toml @@ -1,3 +1,4 @@ +# @generated by buck/third-party/rust/synchronize.py [workspace] [package] @@ -12,4 +13,85 @@ name = "top" path = "top.rs" [dependencies] +anyhow = "1.0.89" +assert_cmd = "2.0.8" +assert_matches = "1.5.0" +async-trait = "0.1.83" +backoff = "0.4.0" blake2 = "0.10.6" +bstr = "1.10.0" +clap = { version = "4.5.20", features = [ "derive", "deprecated", "wrap_help", "string" ] } +clap_complete = "4.5.33" +clap_complete_nushell = "4.5.4" +clap-markdown = "0.1.4" +clap_mangen = "0.2.10" +chrono = { version = "0.4.38", default-features = false, features = [ "std", "clock" ] } +chrono-english = { version = "0.1.7" } +clru = "0.6.2" +config = { version = "0.13.4", default-features = false, features = [ "toml" ] } +criterion = "0.5.1" +crossterm = { version = "0.27", default-features = false } +digest = "0.10.7" +dirs = "5.0.1" +dunce = "1.0.5" +either = "1.13.0" +esl01-renderdag = "0.3.0" +futures = "0.3.31" +git2 = { version = "0.19.0", features = [ "vendored-libgit2" ] } +gix = { version = "0.66.0", default-features = false, features = [ "index", "max-performance-safe", "blob-diff" ] } +gix-filter = "0.13.0" +glob = "0.3.1" +hashbrown = { version = "0.15.0", default-features = false, features = [ "inline-more" ] } +hex = "0.4.3" +ignore = "0.4.23" +indexmap = "2.6.0" +indoc = "2.0.4" +insta = { version = "1.40.0", features = [ "filters" ] } +itertools = "0.13.0" +libc = { version = "0.2.159" } +maplit = "1.0.2" +minus = { version = "5.6.1", features = [ "dynamic_output", "search" ] } +num_cpus = "1.16.0" +once_cell = "1.20.2" +pest = "2.7.13" +pest_derive = "2.7.13" +pollster = "0.3.0" +pretty_assertions = "1.4.1" +proc-macro2 = "1.0.87" +prost = "0.12.6" +prost-build = "0.12.6" +quote = "1.0.36" +rand = "0.8.5" +rand_chacha = "0.3.1" +rayon = "1.10.0" +ref-cast = "1.0.23" +regex = "1.11.0" +rpassword = "7.3.1" +scm-record = "0.3.0" +serde = { version = "1.0", features = [ "derive" ] } +serde_json = "1.0.128" +slab = "0.4.9" +smallvec = { version = "1.13.2", features = [ "const_generics", "const_new", "union" ] } +strsim = "0.11.1" +syn = "2.0.79" +tempfile = "3.13.0" +test-case = "3.3.1" +textwrap = "0.16.1" +thiserror = "1.0.64" +timeago = { version = "0.4.2", default-features = false } +tokio = { version = "1.40.0" } +toml_edit = { version = "0.19.15", features = [ "serde" ] } +tracing = "0.1.40" +tracing-chrome = "0.7.2" +tracing-subscriber = { version = "0.3.18", default-features = false, features = [ "std", "ansi", "env-filter", "fmt" ] } +unicode-width = "0.1.14" +version_check = "0.9.5" +watchman_client = { version = "0.9.0" } +whoami = "1.5.2" +zstd = "0.12.4" + +[target.'cfg(unix)'.dependencies] +rustix = { version = "0.38.37", features = [ "fs" ] } + +[target.'cfg(windows)'.dependencies] +winreg = "0.52" diff --git a/buck/third-party/rust/reindeer.toml b/buck/third-party/rust/reindeer.toml index ef51006659..d10b98c45c 100644 --- a/buck/third-party/rust/reindeer.toml +++ b/buck/third-party/rust/reindeer.toml @@ -31,5 +31,11 @@ alias( visibility = ["PUBLIC"], ) +python_bootstrap_binary( + name = 'sync.py', + main = 'synchronize.py', + visibility = [ 'PUBLIC' ], +) + # XXX: normal reindeer-generated code below """ diff --git a/buck/third-party/rust/synchronize.py b/buck/third-party/rust/synchronize.py new file mode 100755 index 0000000000..b9154c47a8 --- /dev/null +++ b/buck/third-party/rust/synchronize.py @@ -0,0 +1,99 @@ +#!/usr/bin/env python3 + +# synchronize.py: sync workspace Cargo.toml with buck2/reindeer Cargo.toml + +import subprocess +import tomllib + +# the workspace Cargo.toml file does not allow expressing conditional +# dependencies, but it functions as the source of truth for all version data, +# and if we want to update third-party//rust with correct platform-specific +# dependencies, we need to parse it, then emit a valid version + +WINDOWS_DEPS = [ 'winreg' ] +UNIX_DEPS = [ 'rustix' ] + +CARGO_TEMPLATE = """# @generated by buck/third-party/rust/synchronize.py +[workspace] + +[package] +name = "rust-third-party" +version = "0.0.0" +publish = false +edition = "2021" + +# Dummy target to keep Cargo happy +[[bin]] +name = "top" +path = "top.rs" + +""" + +def format_dep(rhs) -> str: + # if it's a string, just print it out + if isinstance(rhs, str): + return f'"{rhs}"' + elif isinstance(rhs, bool): + return f'{str(rhs).lower()}' + # if it's a list, format it as a toml array + elif isinstance(rhs, list): + return f'[ {", ".join([f'"{x}"' for x in rhs])} ]' + else: + # format the dict as a toml dict manually + return "{ " + ", ".join([f'{k} = {format_dep(v)}' for k, v in rhs.items()]) + " }" + +def sync_cargo_deps(): + contents = CARGO_TEMPLATE + with open ("Cargo.toml", "rb") as f: + # parse the workspace Cargo.toml + data = tomllib.load(f) + deps = data["workspace"]["dependencies"] + + # delete jj crates + for bad in [ "jj-lib", "jj-lib-proc-macros", "testutils" ]: + if bad in deps: + del deps[bad] + + contents += "[dependencies]\n" + for x, v in deps.items(): + # some crates are only for one platform; we need to remove them and + # handle it below + if x in WINDOWS_DEPS or x in UNIX_DEPS: + continue + contents += f'{x} = {format_dep(v)}\n' + + contents += ("\n[target.'cfg(unix)'.dependencies]\n") + for x in UNIX_DEPS: + contents += f'{x} = {format_dep(deps[x])}\n' + + contents += ("\n[target.'cfg(windows)'.dependencies]\n") + for x in WINDOWS_DEPS: + contents += f'{x} = {format_dep(deps[x])}\n' + + # now write the contents to buck/third-party/rust/Cargo.toml + print("Writing new buck/third-party/rust/Cargo.toml") + with open("buck/third-party/rust/Cargo.toml", "w") as f: + f.write(contents) + + # now run reindeer + print("Now running 'reindeer' to regenerate BUILD files") + cmd = [ + "./tools/bin/reindeer", + "--third-party-dir", + "buck/third-party/rust", + "buckify", + ] + subprocess.run(cmd, check=True) + + # Now run 'buck2 build' to make sure everything is up to date + print("Now running 'buck2 build' to make sure everything works") + cmd = [ + "buck2", + "build", + "@mode//debug", + "third-party//rust", + ] + subprocess.run(cmd, check=True) + +if __name__ == "__main__": + sync_cargo_deps() From caee1a08e5cff12a0ce2883de3378951214227e2 Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Mon, 24 Jun 2024 22:56:52 -0500 Subject: [PATCH 12/21] cargo: suppress warnings for `cfg(buck_build)` This cfg value isn't understood by Cargo, so it needs to have the warning suppressed by default. We could also add an entry to `build.rs` too, but not every package has one. To be used by upcoming diffs. Signed-off-by: Austin Seipp --- Cargo.toml | 3 +++ cli/Cargo.toml | 6 +++--- lib/Cargo.toml | 5 ++--- lib/gen-protos/Cargo.toml | 6 +++--- lib/proc-macros/Cargo.toml | 6 +++--- lib/testutils/Cargo.toml | 6 ++---- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 335399241b..11ef404265 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,6 +16,9 @@ documentation = "https://martinvonz.github.io/jj/" categories = ["version-control", "development-tools"] keywords = ["VCS", "DVCS", "SCM", "Git", "Mercurial"] +[workspace.lints.rust] +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(buck_build)'] } + [workspace.dependencies] anyhow = "1.0.89" assert_cmd = "2.0.8" diff --git a/cli/Cargo.toml b/cli/Cargo.toml index bf9b4de4c7..ba17c7bd07 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -25,6 +25,9 @@ include = [ "/tests/cli-reference@.md.snap" ] +[lints] +workspace = true + [[bin]] name = "jj" path = "src/main.rs" @@ -117,6 +120,3 @@ watchman = ["jj-lib/watchman"] # The archive name is jj, not jj-cli. Also, `cargo binstall` gets # confused by the `v` before versions in archive name. pkg-url = "{ repo }/releases/download/v{ version }/jj-v{ version }-{ target }.{ archive-format }" - -[lints] -workspace = true diff --git a/lib/Cargo.toml b/lib/Cargo.toml index 2fb64c2322..6dd2634d54 100644 --- a/lib/Cargo.toml +++ b/lib/Cargo.toml @@ -21,6 +21,8 @@ include = [ "!*.snap*", ] +[lints] +workspace = true [[test]] name = "runner" @@ -101,6 +103,3 @@ git = ["dep:git2", "dep:gix", "dep:gix-filter"] vendored-openssl = ["git2/vendored-openssl"] watchman = ["dep:tokio", "dep:watchman_client"] testing = ["git"] - -[lints] -workspace = true diff --git a/lib/gen-protos/Cargo.toml b/lib/gen-protos/Cargo.toml index ac6f4a3683..409eadcc58 100644 --- a/lib/gen-protos/Cargo.toml +++ b/lib/gen-protos/Cargo.toml @@ -7,8 +7,8 @@ version = { workspace = true } edition = { workspace = true } license = { workspace = true } -[dependencies] -prost-build = { workspace = true } - [lints] workspace = true + +[dependencies] +prost-build = { workspace = true } diff --git a/lib/proc-macros/Cargo.toml b/lib/proc-macros/Cargo.toml index 8f2c000342..a1d21be46b 100644 --- a/lib/proc-macros/Cargo.toml +++ b/lib/proc-macros/Cargo.toml @@ -13,6 +13,9 @@ readme = { workspace = true } include = ["/LICENSE", "/src/"] +[lints] +workspace = true + [lib] proc-macro = true @@ -20,6 +23,3 @@ proc-macro = true proc-macro2 = { workspace = true } quote = { workspace = true } syn = { workspace = true } - -[lints] -workspace = true diff --git a/lib/testutils/Cargo.toml b/lib/testutils/Cargo.toml index 8bc3309ef0..f1a70c0170 100644 --- a/lib/testutils/Cargo.toml +++ b/lib/testutils/Cargo.toml @@ -12,7 +12,8 @@ repository = { workspace = true } documentation = { workspace = true } readme = { workspace = true } -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[lints] +workspace = true [dependencies] async-trait = { workspace = true } @@ -25,6 +26,3 @@ jj-lib = { workspace = true, features = ["testing"] } pollster = { workspace = true } rand = { workspace = true } tempfile = { workspace = true } - -[lints] -workspace = true From 47842c9f1f6887f528aa68b90ac821ca4aadc0e2 Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Wed, 3 Jul 2024 21:29:36 -0500 Subject: [PATCH 13/21] tools: add a script for checking workspace dependencies buck run -v0 tools/scripts:unused_workspace_deps Signed-off-by: Austin Seipp --- tools/scripts/BUILD | 6 +++ tools/scripts/unused_workspace_deps.py | 60 ++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 tools/scripts/BUILD create mode 100644 tools/scripts/unused_workspace_deps.py diff --git a/tools/scripts/BUILD b/tools/scripts/BUILD new file mode 100644 index 0000000000..c1c448c143 --- /dev/null +++ b/tools/scripts/BUILD @@ -0,0 +1,6 @@ + +python_bootstrap_binary( + name = 'unused_workspace_deps', + main = 'unused_workspace_deps.py', + visibility = [], +) diff --git a/tools/scripts/unused_workspace_deps.py b/tools/scripts/unused_workspace_deps.py new file mode 100644 index 0000000000..04b1153632 --- /dev/null +++ b/tools/scripts/unused_workspace_deps.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 + +# tools like cargo-udeps will only check if the dependencies listed in a +# crate's Cargo.toml file are actually used; it doesn't cross reference the +# workspace cargo file to find unused workspace deps. this script will do that + +import tomllib + +CRATE_TOML_FILES = [ + 'cli/Cargo.toml', + 'lib/Cargo.toml', + 'lib/proc-macros/Cargo.toml', + 'lib/gen-protos/Cargo.toml', + 'lib/testutils/Cargo.toml', +] + +def check_unused_deps(): + all_deps = None + with open("Cargo.toml", "rb") as f: + dat = tomllib.load(f) + all_deps = dat["workspace"]["dependencies"] + + total_deps = len(all_deps) + print(f"Found {total_deps} top-level dependencies in workspace Cargo.toml") + + # now, iterate over all the crate.toml files and check for unused dependencies + # by deleting entries from all_deps, if they exist + deleted_deps = 0 + for crate_toml in CRATE_TOML_FILES: + with open(crate_toml, "rb") as f: + dat = tomllib.load(f) + deps = dat["dependencies"] + + if "build-dependencies" in dat: + for x, v in dat["build-dependencies"].items(): + deps[x] = v + + if "dev-dependencies" in dat: + for x, v in dat["dev-dependencies"].items(): + deps[x] = v + + if "target" in dat: + for target in dat["target"]: + if target.startswith("cfg("): + for x, v in dat["target"][target]["dependencies"].items(): + deps[x] = v + + for x in deps.keys(): + if x in all_deps: + del all_deps[x] + deleted_deps += 1 + + print(f'Found {deleted_deps} unique dependencies among {len(CRATE_TOML_FILES)} Cargo.toml files') + if len(all_deps) > 0: + print(f"Found {len(all_deps)} unused dependencies:") + for x in all_deps.keys(): + print(f" {x}") + +if __name__ == '__main__': + check_unused_deps() From 3a38f0b59a4da79b622f06b1a529ca77d6ed2e90 Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Mon, 24 Jun 2024 18:44:19 -0500 Subject: [PATCH 14/21] buck: cargo<->buck sync tool This adds a new step to the `synchronize.py` script that synchronizes dependencies between `Cargo.toml` and `BUCK` files. In this model, Cargo remains the source of truth. Signed-off-by: Austin Seipp --- buck/third-party/rust/synchronize.py | 87 ++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/buck/third-party/rust/synchronize.py b/buck/third-party/rust/synchronize.py index b9154c47a8..338755bb33 100755 --- a/buck/third-party/rust/synchronize.py +++ b/buck/third-party/rust/synchronize.py @@ -2,6 +2,7 @@ # synchronize.py: sync workspace Cargo.toml with buck2/reindeer Cargo.toml +import re import subprocess import tomllib @@ -49,6 +50,11 @@ def sync_cargo_deps(): data = tomllib.load(f) deps = data["workspace"]["dependencies"] + # add build-dependencies to the normal set of deps + if "build-dependencies" in data: + for x, v in data["build-dependencies"].items(): + deps[x] = v + # delete jj crates for bad in [ "jj-lib", "jj-lib-proc-macros", "testutils" ]: if bad in deps: @@ -95,5 +101,86 @@ def sync_cargo_deps(): ] subprocess.run(cmd, check=True) +BUILD_FILES= [ + ( 'lib/gen-protos/BUILD', 'lib/gen-protos/Cargo.toml' ), + ( 'lib/proc-macros/BUILD', 'lib/proc-macros/Cargo.toml' ), + + ( 'cli/BUILD.deps.bzl', 'cli/Cargo.toml' ), + ( 'lib/BUILD', 'lib/Cargo.toml' ), +] + +def update_buck_files(): + + for (buck_file, cargo_file) in BUILD_FILES: + print("Updating", buck_file, "with", cargo_file) + # load cargo_file into a dict + with open(cargo_file, "rb") as f: + cargo_data = tomllib.load(f) + + CARGO_START_RE = re.compile(r'(\s*)# CARGO-SYNC-START: (\S+)') + CARGO_END_RE = re.compile(r'(\s*)# CARGO-SYNC-END') + + lines = [] + with open(buck_file, "r") as f: + # walk over the lines until we match CARGO_START_RE, + # and then capture that line and the next one by + # appending them to lines, then stop until we match + # CARGO_END_RE + capturing = True + middle = False + for line in f: + if capturing: + lines.append(line) + + if middle: + middle = False + + # now print out the real deps + prefix = ' ' * indent_size + dep_lines = [] + + # if the captured name ends with "@cfg($FOO)", + # then capture $FOO and use it to select the + # proper target-specific cargo deps + + m = re.compile(r'\S+\@cfg\((\S+)\)').match(captured_name) + if m != None: + plat = f'cfg({m.group(1)})' + deps = cargo_data["target"][plat]["dependencies"] + else: + deps = cargo_data[captured_name] + + for k, _ in deps.items(): + new_line = prefix + # special case: jj-lib needs to be routed to //lib + if k == "jj-lib": + new_line += f"'//lib:{k}',\n" + elif k == "jj-lib-proc-macros": + new_line += f"'//lib/proc-macros:{k}',\n" + else: + new_line += f"'third-party//rust:{k}',\n" + dep_lines.append(new_line) + + dep_lines = sorted(dep_lines) + lines.extend(dep_lines) + + if CARGO_START_RE.match(line): + middle = True + capturing = False + indent_size = len(CARGO_START_RE.match(line).group(1)) + captured_name = CARGO_START_RE.match(line).group(2) + if CARGO_END_RE.match(line): + lines.append(line) + capturing = True + + contents = "".join(lines) + if False: + # XXX FIXME: remove this debug path + print(contents) + else: + with open(buck_file, "w") as f: + f.write(contents) + if __name__ == "__main__": sync_cargo_deps() + update_buck_files() From 6974f059c893396fe3d968200a82102da314dacf Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Sun, 6 Aug 2023 17:50:00 -0500 Subject: [PATCH 15/21] gen-protos: add BUILD files This is needed to emit the `.rs` files into the right build directory in a follow up diff to add `BUCK` files. Signed-off-by: Austin Seipp --- lib/gen-protos/BUILD | 63 ++++++++++++++++++++++++++++++++++++++ lib/gen-protos/src/main.rs | 24 +++++++++++++-- 2 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 lib/gen-protos/BUILD diff --git a/lib/gen-protos/BUILD b/lib/gen-protos/BUILD new file mode 100644 index 0000000000..620d8cc375 --- /dev/null +++ b/lib/gen-protos/BUILD @@ -0,0 +1,63 @@ + +load("//buck/shims/jj.bzl", "jj") + +http_archive( + name = 'protoc-bin-vendored.tar.gz', + sha256 = '08f5cc8f522af7ba8f9f1a81f93bba94cef9312e5e644df4ecc08ea7ce9c40f7', + urls = [ + 'https://github.com/stepancheg/rust-protoc-bin-vendored/archive/20ebfb74aad5fb0f084ca2c2ebc0885b4ad18430.tar.gz', + ], + type = 'tar.gz', + strip_prefix = 'rust-protoc-bin-vendored-20ebfb74aad5fb0f084ca2c2ebc0885b4ad18430', + sub_targets = [ + 'protoc-bin-vendored-linux-aarch_64/bin/protoc', + 'protoc-bin-vendored-linux-aarch_64/include', + 'protoc-bin-vendored-linux-x86_64/bin/protoc', + 'protoc-bin-vendored-linux-x86_64/include', + 'protoc-bin-vendored-macos-x86_64/bin/protoc', + 'protoc-bin-vendored-macos-x86_64/include', + 'protoc-bin-vendored-win32/bin/protoc.exe', + 'protoc-bin-vendored-win32/include', + ], +) + +jj.rust_binary( + name = 'gen-protos', + srcs = ['src/main.rs'], + env = { + 'CARGO_MANIFEST_DIR': '$(location //lib:protos.pb)', + }, + deps = [ + # CARGO-SYNC-START: dependencies + 'third-party//rust:prost-build', + # CARGO-SYNC-END + ] +) + +genrule( + name = 'protos.rs', + cmd = "$(exe :gen-protos)", + out = ".", + env = { + 'PROTOC': select({ + 'config//cpu:arm64': select({ + 'config//os:linux': '$(location :protoc-bin-vendored.tar.gz[protoc-bin-vendored-linux-aarch_64/bin/protoc])', + 'config//os:macos': '$(location :protoc-bin-vendored.tar.gz[protoc-bin-vendored-macos-x86_64/bin/protoc])', + }), + 'config//cpu:x86_64': select({ + 'config//os:linux': '$(location :protoc-bin-vendored.tar.gz[protoc-bin-vendored-linux-x86_64/bin/protoc])', + 'config//os:windows': '$(location :protoc-bin-vendored.tar.gz[protoc-bin-vendored-win32/bin/protoc.exe])', + }) + }), + 'PROTOC_INCLUDE': select({ + 'config//cpu:arm64': select({ + 'config//os:linux': '$(location :protoc-bin-vendored.tar.gz[protoc-bin-vendored-linux-aarch_64/include])', + 'config//os:macos': '$(location :protoc-bin-vendored.tar.gz[protoc-bin-vendored-macos-x86_64/include])', + }), + 'config//cpu:x86_64': select({ + 'config//os:linux': '$(location :protoc-bin-vendored.tar.gz[protoc-bin-vendored-linux-x86_64/include])', + 'config//os:windows': '$(location :protoc-bin-vendored.tar.gz[protoc-bin-vendored-win32/include])', + }) + }) + } +) diff --git a/lib/gen-protos/src/main.rs b/lib/gen-protos/src/main.rs index c9b8d4f017..26e381765e 100644 --- a/lib/gen-protos/src/main.rs +++ b/lib/gen-protos/src/main.rs @@ -23,11 +23,29 @@ fn main() -> Result<()> { "working_copy.proto", ]; - let root = Path::new(env!("CARGO_MANIFEST_DIR")).parent().unwrap(); - let protos_dir = root.join("src").join("protos"); + let root = Path::new(env!("CARGO_MANIFEST_DIR")); + let protos_dir = if cfg!(buck_build) { + // NOTE (aseipp, buck_build): the cargo build allows `../src/protos` + // like below, but this is really awkward in the buck2 design since + // directory names are autogenerated. use `src/protos` instead. + root.join("src").join("protos") + } else { + root.parent().unwrap().join("src").join("protos") + }; + + let out_dir = if cfg!(buck_build) { + // NOTE (aseipp, buck_build): under `cfg(buck_build)` the genrule() that + // invokes this program will automatically set $OUT, so always use that + // and fail otherwise. + std::env::var("OUT") + .map(|s| Path::new(&s).to_path_buf()) + .expect("OUT environment variable not set during cfg(buck_build)") + } else { + protos_dir.clone() + }; prost_build::Config::new() - .out_dir(&protos_dir) + .out_dir(&out_dir) .include_file("mod.rs") // For old protoc versions. 3.12.4 needs this, but 3.21.12 doesn't. .protoc_arg("--experimental_allow_proto3_optional") From 4b65fe4027edf5a5e452064d610fafc475cf7ce1 Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Sun, 6 Aug 2023 17:50:00 -0500 Subject: [PATCH 16/21] proc-macros: add BUILD files Signed-off-by: Austin Seipp --- lib/proc-macros/BUILD | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 lib/proc-macros/BUILD diff --git a/lib/proc-macros/BUILD b/lib/proc-macros/BUILD new file mode 100644 index 0000000000..5b7d9d3d62 --- /dev/null +++ b/lib/proc-macros/BUILD @@ -0,0 +1,22 @@ + +load("//buck/shims/jj.bzl", "jj") + +alias( + # NOTE: default target for this package + name = 'proc-macros', + actual = ':jj-lib-proc-macros', +) + +jj.rust_library( + name = 'jj-lib-proc-macros', + srcs = glob(["src/**/*.rs"]), + proc_macro = True, + deps = [ + # CARGO-SYNC-START: dependencies + 'third-party//rust:proc-macro2', + 'third-party//rust:quote', + 'third-party//rust:syn', + # CARGO-SYNC-END + ], + visibility = ['PUBLIC'], # XXX FIXME (aseipp): why is this needed? +) From 11e05e16223435671e7192d3b618a4e23427db7d Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Sun, 6 Aug 2023 17:50:00 -0500 Subject: [PATCH 17/21] lib: add BUILD files The `grammar` macro from `pest_derive` doesn't actually interpret the given file as relative in our case, so we have to give it the fully qualified relative path which exists in the `buck-out/` dir. Signed-off-by: Austin Seipp --- lib/BUILD | 120 ++++++++++++++++++++++++++++++++++++++ lib/PACKAGE | 5 ++ lib/src/fileset_parser.rs | 6 ++ lib/src/revset_parser.rs | 6 ++ 4 files changed, 137 insertions(+) create mode 100644 lib/BUILD create mode 100644 lib/PACKAGE diff --git a/lib/BUILD b/lib/BUILD new file mode 100644 index 0000000000..bffdfe5eb2 --- /dev/null +++ b/lib/BUILD @@ -0,0 +1,120 @@ + +load("//buck/shims/jj.bzl", "jj") + +[ + # set an alias for 'lib' which is the default for this package, and jj-lib + # which other crates may set dependencies on. defaults to the full build + alias( + name = name, + actual = ':jj-lib-full', + ) for name in [ 'lib', 'jj-lib' ] +] + +filegroup( + name = 'protos.pb', + srcs = glob(['src/protos/*.proto']), + visibility = [ '//lib/...' ], +) + +# extra dependencies for the full build of jj-lib +FULL_DEPS = [ + 'third-party//rust:git2', + 'third-party//rust:gix', + 'third-party//rust:watchman_client', +] + +# these deps are shared between all versions +# of jj-lib. filter out FULL_DEPS from this list +COMMON_DEPS = filter(lambda x: x not in FULL_DEPS, [ + # CARGO-SYNC-START: dependencies + '//lib/proc-macros:jj-lib-proc-macros', + 'third-party//rust:async-trait', + 'third-party//rust:backoff', + 'third-party//rust:blake2', + 'third-party//rust:bstr', + 'third-party//rust:chrono', + 'third-party//rust:chrono-english', + 'third-party//rust:clru', + 'third-party//rust:config', + 'third-party//rust:digest', + 'third-party//rust:either', + 'third-party//rust:futures', + 'third-party//rust:git2', + 'third-party//rust:gix', + 'third-party//rust:gix-filter', + 'third-party//rust:glob', + 'third-party//rust:hashbrown', + 'third-party//rust:hex', + 'third-party//rust:ignore', + 'third-party//rust:indexmap', + 'third-party//rust:itertools', + 'third-party//rust:maplit', + 'third-party//rust:once_cell', + 'third-party//rust:pest', + 'third-party//rust:pest_derive', + 'third-party//rust:pollster', + 'third-party//rust:prost', + 'third-party//rust:rand', + 'third-party//rust:rand_chacha', + 'third-party//rust:rayon', + 'third-party//rust:ref-cast', + 'third-party//rust:regex', + 'third-party//rust:serde', + 'third-party//rust:serde_json', + 'third-party//rust:smallvec', + 'third-party//rust:strsim', + 'third-party//rust:tempfile', + 'third-party//rust:thiserror', + 'third-party//rust:tokio', + 'third-party//rust:tracing', + 'third-party//rust:watchman_client', + 'third-party//rust:whoami', + 'third-party//rust:zstd', + # CARGO-SYNC-END +]) + select({ + "config//os:windows": [ + # CARGO-SYNC-START: dependencies@cfg(windows) + 'third-party//rust:winreg', + # CARGO-SYNC-END + ], + "DEFAULT": [ + # CARGO-SYNC-START: dependencies@cfg(unix) + 'third-party//rust:rustix', + # CARGO-SYNC-END + ], +}) + +jj.rust_library( + name = "jj-lib-full", + crate = "jj_lib", + srcs = glob([ + "src/**/*.pest", + "src/**/*.rs", + ], exclude = [ + "src/protos/*.rs" + ]), + mapped_srcs = { + "//lib/gen-protos:protos.rs": "src/protos", + }, + features = [ + "watchman", + "git", + ], + deps = COMMON_DEPS + FULL_DEPS, +) + +jj.rust_library( + name = "jj-lib-core", + crate = "jj_lib", + srcs = glob([ + "src/**/*.pest", + "src/**/*.rs", + ], exclude = [ + "src/protos/*.rs" + ]), + mapped_srcs = { + "//lib/gen-protos:protos.rs": "src/protos", + }, + + deps = COMMON_DEPS, +) diff --git a/lib/PACKAGE b/lib/PACKAGE new file mode 100644 index 0000000000..9bf0691b15 --- /dev/null +++ b/lib/PACKAGE @@ -0,0 +1,5 @@ + +package( + inherit = True, + visibility = [ 'PUBLIC' ], +) diff --git a/lib/src/fileset_parser.rs b/lib/src/fileset_parser.rs index 09f722c589..8cb1b014e5 100644 --- a/lib/src/fileset_parser.rs +++ b/lib/src/fileset_parser.rs @@ -31,6 +31,12 @@ use crate::dsl_util::Diagnostics; use crate::dsl_util::InvalidArguments; use crate::dsl_util::StringLiteralParser; +#[cfg(buck_build)] +#[derive(Parser)] +#[grammar = "lib/src/fileset.pest"] +struct FilesetParser; + +#[cfg(not(buck_build))] #[derive(Parser)] #[grammar = "fileset.pest"] struct FilesetParser; diff --git a/lib/src/revset_parser.rs b/lib/src/revset_parser.rs index 68839d13fc..7519812ad4 100644 --- a/lib/src/revset_parser.rs +++ b/lib/src/revset_parser.rs @@ -46,6 +46,12 @@ use crate::dsl_util::InvalidArguments; use crate::dsl_util::KeywordArgument; use crate::dsl_util::StringLiteralParser; +#[cfg(buck_build)] +#[derive(Parser)] +#[grammar = "lib/src/revset.pest"] +struct RevsetParser; + +#[cfg(not(buck_build))] #[derive(Parser)] #[grammar = "revset.pest"] struct RevsetParser; From f76f72902e8d2f203e8c3bfe39f470ca7180672b Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Sun, 6 Aug 2023 17:50:00 -0500 Subject: [PATCH 18/21] cli: add BUILD files The `grammar` macro from `pest_derive` doesn't actually interpret the given file as relative in our case, so we have to give it the fully qualified relative path which exists in the `buck-out/` dir. Signed-off-by: Austin Seipp --- cli/BUILD | 38 +++++++++++++++++++++++++++ cli/BUILD.deps.bzl | 54 ++++++++++++++++++++++++++++++++++++++ cli/PACKAGE | 4 +++ cli/examples/BUILD | 23 ++++++++++++++++ cli/src/template_parser.rs | 6 +++++ 5 files changed, 125 insertions(+) create mode 100644 cli/BUILD create mode 100644 cli/BUILD.deps.bzl create mode 100644 cli/PACKAGE create mode 100644 cli/examples/BUILD diff --git a/cli/BUILD b/cli/BUILD new file mode 100644 index 0000000000..a00c89bcf9 --- /dev/null +++ b/cli/BUILD @@ -0,0 +1,38 @@ + +load("//buck/shims/jj.bzl", "jj") +load("//cli/BUILD.deps.bzl", "JJ_CLI_DEPS") + +alias( + # NOTE: default target for this package + name = 'cli', + actual = ':jj', +) + +jj.rust_library( + name = "jj-cli", + srcs = glob([ + "src/**/*.rs", + "src/**/*.toml", + "src/**/*.json", + "src/**/*.pest", + ], exclude = [ + "**/main.rs" + ]), + + features = [ + "watchman", + "git", + ], + + deps = JJ_CLI_DEPS, +) + +jj.rust_binary( + name = 'jj', + srcs = ['src/main.rs'], + features = [ + "watchman", + "git", + ], + deps = [ ":jj-cli" ] + JJ_CLI_DEPS, +) diff --git a/cli/BUILD.deps.bzl b/cli/BUILD.deps.bzl new file mode 100644 index 0000000000..9799ea08ec --- /dev/null +++ b/cli/BUILD.deps.bzl @@ -0,0 +1,54 @@ + +JJ_CLI_DEPS = [ + # CARGO-SYNC-START: dependencies + '//lib:jj-lib', + 'third-party//rust:bstr', + 'third-party//rust:chrono', + 'third-party//rust:clap', + 'third-party//rust:clap-markdown', + 'third-party//rust:clap_complete', + 'third-party//rust:clap_complete_nushell', + 'third-party//rust:clap_mangen', + 'third-party//rust:config', + 'third-party//rust:criterion', + 'third-party//rust:crossterm', + 'third-party//rust:dirs', + 'third-party//rust:dunce', + 'third-party//rust:esl01-renderdag', + 'third-party//rust:futures', + 'third-party//rust:git2', + 'third-party//rust:gix', + 'third-party//rust:indexmap', + 'third-party//rust:indoc', + 'third-party//rust:itertools', + 'third-party//rust:maplit', + 'third-party//rust:minus', + 'third-party//rust:once_cell', + 'third-party//rust:pest', + 'third-party//rust:pest_derive', + 'third-party//rust:pollster', + 'third-party//rust:rayon', + 'third-party//rust:regex', + 'third-party//rust:rpassword', + 'third-party//rust:scm-record', + 'third-party//rust:serde', + 'third-party//rust:slab', + 'third-party//rust:strsim', + 'third-party//rust:tempfile', + 'third-party//rust:textwrap', + 'third-party//rust:thiserror', + 'third-party//rust:timeago', + 'third-party//rust:toml_edit', + 'third-party//rust:tracing', + 'third-party//rust:tracing-chrome', + 'third-party//rust:tracing-subscriber', + 'third-party//rust:unicode-width', + # CARGO-SYNC-END +] + select({ + "config//os:windows": [], + "DEFAULT": [ + # CARGO-SYNC-START: dependencies@cfg(unix) + 'third-party//rust:libc', + # CARGO-SYNC-END + ], +}) diff --git a/cli/PACKAGE b/cli/PACKAGE new file mode 100644 index 0000000000..5019e6766b --- /dev/null +++ b/cli/PACKAGE @@ -0,0 +1,4 @@ + +package( + visibility = [ 'PUBLIC' ], +) diff --git a/cli/examples/BUILD b/cli/examples/BUILD new file mode 100644 index 0000000000..437e77f085 --- /dev/null +++ b/cli/examples/BUILD @@ -0,0 +1,23 @@ + +load("//buck/shims/jj.bzl", "jj") +load("//cli/BUILD.deps.bzl", "JJ_CLI_DEPS") + +EXAMPLES = [ + 'custom-backend', + 'custom-command', + 'custom-commit-templater', + 'custom-global-flag', + 'custom-operation-templater', + 'custom-working-copy', +] + +[ + jj.rust_binary( + name = name, + srcs = glob(["{}/**/*.rs".format(name)]), + deps = [ + "//cli:jj-cli", + "third-party//rust:async-trait", + ] + JJ_CLI_DEPS, + ) for name in EXAMPLES +] diff --git a/cli/src/template_parser.rs b/cli/src/template_parser.rs index b9bf143a25..ce4b78ba60 100644 --- a/cli/src/template_parser.rs +++ b/cli/src/template_parser.rs @@ -41,6 +41,12 @@ use pest::Parser; use pest_derive::Parser; use thiserror::Error; +#[cfg(buck_build)] +#[derive(Parser)] +#[grammar = "cli/src/template.pest"] +struct TemplateParser; + +#[cfg(not(buck_build))] #[derive(Parser)] #[grammar = "template.pest"] struct TemplateParser; From a42d45dc7de88ef46f2629757228594cfb709786 Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Wed, 26 Jun 2024 06:21:50 -0500 Subject: [PATCH 19/21] github: add buck2 ci build Signed-off-by: Austin Seipp --- .github/actions/install-dotslash/action.yml | 30 +++++++++++ .github/workflows/build-buck2.yml | 55 +++++++++++++++++++++ buck/platforms/defs.bzl | 2 +- 3 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 .github/actions/install-dotslash/action.yml create mode 100644 .github/workflows/build-buck2.yml diff --git a/.github/actions/install-dotslash/action.yml b/.github/actions/install-dotslash/action.yml new file mode 100644 index 0000000000..878195a88c --- /dev/null +++ b/.github/actions/install-dotslash/action.yml @@ -0,0 +1,30 @@ +name: Install DotSlash +description: Install DotSlash on the current system +inputs: + version: + description: "version of dotslash" + required: false + default: "0.4.1" +runs: + using: "composite" + steps: + - name: Install DotSlash + shell: bash + run: | + mkdir -p $RUNNER_TEMP/dotslash + echo "$RUNNER_TEMP/dotslash" >> $GITHUB_PATH + + if [[ "$RUNNER_OS" == "Windows" ]]; then + C:\\msys64\\usr\\bin\\wget.exe https://github.com/facebook/dotslash/releases/download/v0.4.1/dotslash-windows.v0.4.1.tar.gz + tar xf dotslash-windows.v0.4.1.tar.gz + mv dotslash.exe $RUNNER_TEMP/dotslash + else + if [[ "$RUNNER_OS" == "macOS" ]]; then + wget https://github.com/facebook/dotslash/releases/download/v0.4.1/dotslash-macos.v0.4.1.tar.gz + tar xf dotslash-macos.v0.4.1.tar.gz + elif [[ "$RUNNER_OS" == "Linux" ]]; then + wget https://github.com/facebook/dotslash/releases/download/v0.4.1/dotslash-ubuntu-22.04.x86_64.v0.4.1.tar.gz + tar xf dotslash-ubuntu-22.04.x86_64.v0.4.1.tar.gz + fi + mv dotslash $RUNNER_TEMP/dotslash + fi diff --git a/.github/workflows/build-buck2.yml b/.github/workflows/build-buck2.yml new file mode 100644 index 0000000000..4ade0749d0 --- /dev/null +++ b/.github/workflows/build-buck2.yml @@ -0,0 +1,55 @@ +name: buck2 + +on: + push: + branches: + - main + pull_request: + +permissions: read-all + +jobs: + buck2: + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu-latest + abi: x86_64-unknown-linux-gnu + - os: windows-latest + abi: x86_64-pc-windows-msvc + - os: macos-latest + abi: aarch64-apple-darwin + # NOTE: macos-13 is the most recent x86_64 macos runner + #- os: macos-13 + # abi: x86_64-apple-darwin + runs-on: ${{ matrix.os }} + timeout-minutes: 15 # NOTE (aseipp): keep in-sync with the build.yml timeout limit + + name: build with buck2 + steps: + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 + - name: (Linux) Install Mold + if: runner.os == 'Linux' + run: | + sudo apt-get update && sudo apt-get install -y mold + - name: Install DotSlash + uses: ./.github/actions/install-dotslash + - name: Add build tools to $PATH + run: echo "$PWD/tools/bin" >> $GITHUB_PATH + # FIXME (aseipp): use 'buck2' out of `$PATH` after we have dotslash .exe + # shim files for windows. until then just invoke manually + - name: buck2 build //... + run: | + mkdir -p out + dotslash ./tools/bin/buck2 build @mode//debug //... + cp buck-out/v2/log/*.pb.zst out + dotslash ./tools/bin/buck2 build @mode//debug cli --out out/jj.exe + ./out/jj.exe version + + - name: "Upload artifact" + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 + with: + name: jj-${{ matrix.abi }} + path: out + retention-days: 14 diff --git a/buck/platforms/defs.bzl b/buck/platforms/defs.bzl index 1e9f135cfe..5324ec0ce4 100644 --- a/buck/platforms/defs.bzl +++ b/buck/platforms/defs.bzl @@ -216,6 +216,6 @@ default_platforms = [ ("arm64", "macos"), #("arm64", "windows"), ("x86_64", "linux"), - #("x86_64", "macos"), + ("x86_64", "macos"), ("x86_64", "windows"), ] From c2c8b8d60492166b57e7440eb6bea46f1cfe308b Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Fri, 28 Jun 2024 17:57:10 -0500 Subject: [PATCH 20/21] vscode: use buck for `rust-analyzer` settings --- .vscode/settings.json | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.vscode/settings.json b/.vscode/settings.json index 9d61605e83..6998959391 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -10,4 +10,21 @@ "BUILD": "starlark", "PACKAGE": "starlark", }, + + "rust-analyzer.workspace.discoverConfig": { + "command": [ + "rust-project", + "develop-json", + "--sysroot-mode=rustc", + "{arg}" + ], + "progressLabel": "rust-analyzer[buck2]", + "filesToWatch": ["BUILD", "PACKAGE"] + }, + + "rust-analyzer.check.overrideCommand": [ + "rust-project", + "check", + "$saved_file", + ] } From 2d292cab1bce1ccf9bc6ef0ca208cb4230fcea53 Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Tue, 25 Jun 2024 00:03:06 -0500 Subject: [PATCH 21/21] docs: add buck2 docs Signed-off-by: Austin Seipp --- docs/buck2.md | 937 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 937 insertions(+) create mode 100644 docs/buck2.md diff --git a/docs/buck2.md b/docs/buck2.md new file mode 100644 index 0000000000..d5f7fb20c2 --- /dev/null +++ b/docs/buck2.md @@ -0,0 +1,937 @@ +# Buck2 builds + +> [!TIP] +> This document is primarily of interest to developers. See also [Contributing] +> for more information on how to contribute in general. + +There is experimental support for building `jj` with [`buck2`][Buck2] as an +alternative to `cargo`. Buck2 is a hermetic and reproducible build system +designed for multiple programming languages. + +- If you're wondering "Why?", please read the section below titled + "[Why Buck2](#why-buck2)" +- If you're interested in using Buck2 for development, please read the section + below titled + "[Step 1: Please please please install Dotslash](#step-1-please-please-please-install-dotslash)" + +> [!WARNING] +> Buck2 support is a work in progress, and is not yet complete; writing patches +> still requires `cargo` in practice, and so it is not recommended for primary +> development use. It may never be recommended for primary development use or +> merged into the main tree. + +## Current support & feature parity + +Some notes about build compatibility are included below. + +Legend: + +- ✅: Supported +- ⚠️: Partial support/WIP +- ❌: Not supported +- ❓: Status unknown/needs testing +- ⛔: Unsupported + +| Major items | Status | +| ------------------------- | -------------- | +| `rust-analyzer` | ✅ | +| CI setup (GHA) | ✅ | +| Cargo (re)synchronization | ✅1 | + +| Unique features | Status | +| --------------------- | --------------- | +| Hermetic toolchain | ⚠️ | +| RBE/GHA `ActionCache` | ❌ | +| Auto `gen-protos` | ✅ 2 | + +| Support matrix | Cargo | Buck2 | +| --------------------- | ----- | ----------------- | +| Fully working build | ✅ | ✅ | +| Debug/Release configs | ✅ | ✅ | +| Full test suite | ✅ |️ ❌ | +| Release-able binaries | ✅ |️ ❌3,4 | +| Supports Nix devShell | ✅ |️ ⚠️5,6 | + +1. `Cargo.toml` files remain the source of truth for Rust dependency info, and a + tool to resynchronize `BUILD` files with `Cargo.toml` is provided. +2. `gen-protos` rebuilds `.proto` files automatically if they change, so there + is no need to use the committed `.rs` files. +3. macOS and Windows binaries are theoretically usable and distributable (no 3rd + party shared object dependencies), except for being untested. +4. Linux binaries are working but we can't yet produce `musl` builds, which + makes them less useful for distribution. However, glibc builds will often be + faster (faster malloc and faster memcpy/string routines), so it may be good + to support both. +5. Works fine on Linux, not macOS. +6. It is unclear whether Nix+Buck2 will be a supported combination in the long + run + +### Platform support + +| OS | Architecture | Status | +| ------- | ------------ | -------------- | +| Linux | x86_64 | ✅ | +| | aarch64 | ✅1 | +| macOS | x86_64 | ❌ | +| | aarch64 | ✅ | +| Windows | x86_64 | ✅ | +| | aarch64 | ❌2 | + +1. `aarch64-linux` requires [`bindgen`][bindgen] in `$PATH` +2. Entirely theoretical at this point because many other tools need to support + it, but a logical conclusion to all the other supported builds. + +[bindgen]: https://rust-lang.github.io/rust-bindgen/command-line-usage.html + +### Fixed bugs and related issues + +The Buck2 build is known to fix at least the following bugs, though they may all +have alternative solutions to varying degrees: + +- https://github.com/martinvonz/jj/issues/3984 + - libssh2 is built correctly by Buck2 on a fresh Windows system +- https://github.com/martinvonz/jj/issues/3322 + - BoringSSL enables ed25519 keys on all platforms in all builds +- https://github.com/martinvonz/jj/pull/3554 + - BoringSSL builds do not require perl/make +- https://github.com/martinvonz/jj/issues/4005 + - Buck2-built `jj` binaries have a statically built CRT on Windows + - Fixed in `main` by https://github.com/martinvonz/jj/pull/4096 + +## Step 1: Please please please install Dotslash + +Hermetic builds require using consistent build tools across developers; a major +selling point of solutions like Nix, Bazel, or Buck2 is that they do this for +us. But then how do we "bootstrap" the world with a consistent version of Buck2 +to start the process? + +Answer: We use [Dotslash] to manage Buck2 versions in a way that's consistent +across all developers and amenable to version control. In short, `dotslash` is +an interpreter for "dotslash files", and a Dotslash file is merely a JSON file +that lists a binary that should be downloaded and run, e.g. download binary +`example.com/aarch64.tar.gz` on `aarch64-linux`, and run the binary `bin/foo` +inside. + +By marking these JSON files as `+x` executable, and using Dotslash as the +"interpreter" for them, we can transparently download and run the correct +version of Buck2 for the current platform. Most importantly, these JSON files +are very small, easy to read, and can be recorded in version control history. +That means you'll always get a consistent build even when checking out +historical versions or when working on a different machine. + +You can install Dotslash binaries by following the instructions at: + +- + +Or, if you have Rust installed, you can install Dotslash by running: + +```sh +cargo install dotslash +``` + +Or, if you have Nix, you can install that way as well: + +```sh +nix profile install 'nixpkgs#dotslash' +``` + +> [!TIP] +> Check out the [Dotslash documentation](https://dotslash-cli.com/docs/), +> including the "Motivation" section, for more information about the design and +> use of Dotslash. + +## Step 2: Building `jj` with Buck2 + +> [!IMPORTANT] +> You currently must have `rustc` installed, see for +> installation. + +After installing `dotslash` into your `$PATH`, you can build `jj` with the +included `buck2` file under `./tools/bin`: + +```sh +# Linux/macOS +export $PATH="$(jj root)/tools/bin:$PATH" +buck2 run cli -- version +``` + +```powershell +# Windows +dotslash ./tools/bin/buck2 run cli -- version +``` + +Dotslash will transparently run the correct version of `buck2`, and `buck2` will +build and run `jj version` on your behalf. + +--- + +## Why Buck2 + +Today, Cargo suits Jujutsu developers quite well, as the entire project is +written in Rust. But as time goes on and we look to grow, certain limitations +will start to be felt acutely. + +### Multi-language and project support + +The most glaring limitation of Cargo is that, like all other language-specific +build tools, its build graph has dependencies between "targets", but it only has +a Rust-specific notion of what a "target" is. Extending its dependency graph +beyond that is nearly impossible, resulting in the need for extra tools that can +only express coarse-grained dependencies between multiple larger targets. + +This has practical and pragmatic consequences. For Jujutsu, three of them in +particular are relevant to the developers today: usage of C, and usage of +JavaScript, and usage of Python. + +
+Case 1: C dependencies + +Jujutsu is written in Rust, but it currently has 3 major C libraries as +dependencies: + +- `libgit2` for Git support, which needs +- `libssh2` for SSH support, which needs +- `openssl` for cryptography (e.g. TLS transport for `https` clones and ed25519 + support in libssh2) + +Currently, all of these are managed on each platform by `cargo` through the use +of `build.rs` scripts that are opaque and have effectively unlimited power. +However, this has some unfortunate consequences for multi-platform support. + +The most notable is that `openssl` is complicated handle on Windows due to the +requirements for Make and Perl that are needed to build it; that means it isn't +enough to just have the source code, MSVC, and the Rust compiler, but often you +will need a third party toolchain like vcpkg to provide prebuilt `.lib` files, +or you must use other tools like `msys` to provide a Bash shell with working +`perl`/`make`. (On Linux and macOS, OpenSSL support is often easily available in +some form provided by the operating system.) + +To make this simpler, we _do_ have the option to refrain from `libssh2` using +OpenSSL on Windows, instead using the Windows Cryptography Next Gen (NCG) +library. This is the default when compiling from source with `cargo`. + +But this gives a poorer user experience for our Windows users who compile from +source to report bugs upstream, or fix issues. For example, +[#3322](https://github.com/martinvonz/jj/issues/3322) describes a bug where a +user can no longer clone a repository because NCG does not support Ed25519 host +keys, which are offered by GitHub (requiring an extra `ssh-keyscan` step to +fix). A fix to always use OpenSSL on Windows was proposed in +[#3554](https://github.com/martinvonz/jj/pull/3554), which "vendors" OpenSSL as +part of building the `openssl` Rust crate, but returns us back to the world of +Make and Perl, which is not a great experience for users to figure out, and +seemingly requires a significant amount of platform-specific details to use the +right tools from MSYS2 or vcpkg. + +This also results in a poor feedback loop: Windows users may build binaries that +are silently different from the ones they install from upstream, e.g. a user +installs an `.exe` from our release page, then builds a copy of `jj` on their +own computer, then finds the two behave differently. There is also no clear way +to know what the differences are or alert the user to them, as of today. + +In contrast, the Buck2 build of Jujutsu builds exactly one version of each of +its C dependencies, and has chosen [BoringSSL] as its cryptography library on +all platforms, by shimming it into the Rust build process. BoringSSL is built +manually with our own `BUILD` files. This results in a build of `libssh2` with +identical cryptographic support, including Ed25519 keys, for all users on all +platforms. This means that Windows users can build Jujutsu with nothing more +than MSVC, the Rust compiler, and Buck2, and everything will work handily. + +In the future, it may be possible to replace all these libraries with Rust +equivalents, negating the complex C build process factors. But ultimately, C or +Rust, this is an example of how a dependency you rely on and ship is ultimately +your responsibility to handle in the end. Even if the problem doesn't exist +immediately in your own codebase, it can still be a major source of confusion +and frustration for your users. + +
+
+
+Case 2: JavaScript usage + +We would like to implement an equivalent to Sapling's `sl web` command, and +perhaps even share the code for this with a project like [`gg`][gg] and package +Tauri apps inside the main repository. There has also been discussion of +extensions for VSCode. These all require use of JavaScript, and in practice +without extreme diligence will effectively require us to integrate tools like +`pnpm` or `yarn` into the build process. Even without those tools, it will +require our build graph to ultimately have knowledge of JavaScript in some way. + +A concrete example of this problem is in the [`diffedit3`][diffedit3] package by +Jujutsu contributor Ilya Grigoriev. We may even integrate `diffedit` into the +Jujutsu repository in the future. The source code repository currently is a +mixture of Cargo and npm packages, and due to the inability accurately track +changes between them, it is expected that the developers run `cargo build` and +`npm run build` in sequence and then commit the output `.js` file to the +repository (under `./webapp/dist/assets`). Not only does this bloat repository +sizes, it's unauditable too because there's no clear way to know what exactly +produced the `.js` file. Even doing such updates automatically with trusted +infrastructure (e.g. CI tools) would already require even further bespoke +tooling to be written, so the problem still exists. + +
+
+
+Case 3: Python usage + +TODO: Currently Python is used to build our website. Explain how this is another +manifestation of the same problems above. + +
+
+ +The common refrain at this point is to use something like `cargo xtask` or +`make` in order to represent the dependency graph of the entire project. A +common belief is that doing so is low-cost because it does not "introduce new +dependencies" due to their ubiquity; for instance, `make` is probably installed +on Unicies while `xtask` is already common in Rust. However, the cost of a +solution has to consider adoption as well as ongoing costs. And we do not need +`xtask` and `make` today, so adding them really is adding a new dependency, even +if they're common. + +Ultimately, the solutions that arise from tacking `xtask` or `make` onto an +existing group of tools all run afoul of the same fundamental problems described +in Peter Miller's important 1997 paper +["Recursive Make Considered Harmful"][rmch], including build graphs that are too +conservative (because finer dependencies can't be expressed, so you must be +safe) and are fundamentally incomplete (because the build system can't see the +whole picture of input and output files). + +[BoringSSL]: https://github.com/google/boringssl +[gg]: https://github.com/gulbanana/gg +[diffedit3]: https://github.com/ilyagr/diffedit3/ +[rmch]: https://aegis.sourceforge.io/auug97.pdf + +### Hermetic, safe, scalable builds + +> [!IMPORTANT] +> Buck2 builds of `jj` are not yet hermetically sound. In particular, +> unrestricted access to the filesystem is allowed at build time and we do not +> yet provide hermetic toolchains. + +Buck ultimately treats the build process as a series of _pure functions_ of +their inputs, including all the compilers and tools and source code needed. +Given the same inputs to a tool, you always get the same outputs, down to the +same binary bits. As a result of this, the build graph that Buck constructs will +be "complete" and will fully capture the relationships between all inputs, +commands, and their outputs. That means the build is fundamentally _hermetic_. + +Hermetic builds becomre more valuable as a project grows in size, because the +probability of introducing arbitrary untracked side effects into the build +process approaches 1 as time goes on, often with unintended consequences. The +most ideal outcome of this is a simple failure to compile; more dangerous +results are flaky builds, silent miscompilations, and non-deterministic build +outputs based on internal implementation details e.g. an unstable sort. + +Hermetic builds are also essential for _security_, because they help ensure that +builds are repeatable given a known "ground truth". Scenarios like the [xz utils +backdoor] have many complex factors involved, but an easy to understand one is +that the backdoor relied on the build process being non-hermetic; the backdoor +was inserted under a specific set of trigger criteria that then changed the +taken actions, which could have been detected more easily had there been a known +reproducible output to compare against. Hermetic builds derived from source code +mean that backdoors often have to be inserted in-band _into the code itself_ and +cannot be inserted out-of-band into the build process so easily. + +Finally, hermeticity is an essential feature for _build performance_ at scale +because it is required to allow sensible remote execution, avoid overly +conservative rules, and enable safe caching between computers. The relationships +Buck captures are ultimately as fine grained as desired, down to individual +files and commands, across any language. Such fine detail can only be achieved +with a very complete understanding of the inputs. + +[xz utils backdoor]: https://en.wikipedia.org/wiki/XZ_Utils_backdoor + +### Remote cache support + +Because Buck can see the entire build graph, and the input/output relationship +between every file and command, it is possible to cache the intermediate results +of every build command and every file that is produced, and then download them +transparently on another (compatible) machine. This can be assumed safe under +some basic assumptions (one being that the build is hermetic.) + +The most common case of this is between the CI system and the developer; every +change must pass CI to be merged, and when a change is merged the results of +that build are put in a public cache. A developer may go to sleep for the night +and something gets merged during their slumber. When they wake up, then can +update to the new `main` branch, run `buck2 build`, and will instantly get a +cached build instead of recompiling. + +### "Telescopic" Continuous Integration + +Over the past 15 years, originally with systems like Travis CI and now +GitHub Actions, adoption of continuous integration and continuous builds have +transformed how the typical open source project develops and operates. Overall, +this is a good thing but not without consequence; widely available CI platforms +like GitHub Actions provide economies of scale that allow average developers to +test and deliver their projects more effectively. + +The average modern open source project is, at a high level, defined by two +separate components when talking about health: + +- The build system, whatever that might be. And, + +- The continuous integration system, which sets up an "environment", then runs + the build system in a controlled way. For example, the environment might include + a C++ compiler of a particular kind, which is needed. + +And, as an addendum: + +- Typically this will also run some kind of testing strategy in one of the + two phases (normally the second one as some external platform dependencies + may be needed for "full coverage") + +The job of a build system is to execute programs and produce resulting artifacts +for the purpose of using it (presumably). The job of a CI system is to execute +programs and produce artifacts, but on a remote server provided to you, for +the purpose of shipping software. These are actually quite similar in scope and +requirements, but traditionally the dichotomy of build systems vs build machines +has blurred that a little. And not without reason. + +However, today, modern CI is wonderfully complex, and often strangely +fragile. For example, it often requires you to do things like implement build +pipelines in configuration like YAML, or certain features are gated behind +non-programmable components. Components in the build graph are often implemented +by 3rd parties which are not much different than ordinary dependencies. + +Take GitHub Actions: "actions" are pre-canned steps written in TypeScript or +reusable YAML, like `actions/checkout` or `actions/upload-artifact`. The thing +is, if you have *any third party actions at all* in your workflow, then you +suddenly require the entire GHA system in order to test things. You could write +your entire CI system as a single bash script, but then you have to reimplement +all the logic behind those other components so that it works standalone. You +either add a big dependency on the overall system behavior or end up redoing +everything. There isn't a good trade off between complexity and reuse. + +Another way of thinking of it is that you have the build graph as understood by +the build system, but then your CI system has to implement a *separate* "build +graph" that orchestrates a bunch of work. The graph in a GHA Worfklow page is +not much different from the graph that a tool like `make` or `buck2` builds, at +the end of the day. + +> See also: *[Modern CI is too complex and misdirected][modern-ci]*, by Gregory +Szorc + +[modern-ci]: https://gregoryszorc.com/blog/2021/04/07/modern-ci-is-too-complex-and-misdirected/ + +Instead, in a fully hermetic build system, the build system controls the +*entire* build graph, and all components are considered to be part of that +graph: including all constraints like required compilers, libraries, and all +dependent inputs. There is only *one* build graph that controls everything +and it is available at all times. + +A practical consequence of this is that *nothing is needed but the code +repository* to run all phases of the build. Stages that would traditionally be +relegated to CI like `lint` or `check-dependency-license` scripts are instead +*tests* that are run on every commit, inside the system. There is no distinction +between a "build machine" and "your machine" or any other machine. Anything a CI system +can do, you can reproduce (within reason; such as GPU access.) + +Another practical consequence is that this approach gives you independence from +the underlying CI system. Migrating from GHA to GitLab or other providers is made +far easier because *all* build and test logic resides within Buck's build graph, +not within YAML files describing a particular vendor's approach to running code as +a service. + +This "Buck does everything" approach is what some might call a "Rampant Layering +Violation", but another way of thinking of it is that a system like Buck can be +used to [telescope the infinite series][bonwick-telescope], making the problems +introduced by two separate systems disappear by collapsing all of the +intermediate layers into one. + +[bonwick-telescope]: https://web.archive.org/web/20200427030808/https://blogs.oracle.com/bonwick/rampant-layering-violation + +### Dogfooding deeper VCS+build integration + +A long-term goal for Jujutsu is to actively explore and develop integrations +with the build system and file system layers, but the biggest benefits can +only be realized when they are all tightly woven together. Buck can give us +an opportunity to explore these paths as it is designed with such scenarios +in mind. + +As an example, integration between the version control system and the build +system allows you to ask a question like: + +- What was the last commit ABC that produced an artifact with hash XYZ? + +Further integration between the build system and the filesystem allows you +to ask: + +- What is the hash of file XYZ, *without* demanding the contents of the file? + For example, XYZ may be large, or there may be millions of "XYZs" to + account for in ultra large codebases. + +In the first case, this lets you immediately deduce which commit introduced any +result, which is not only useful for bug hunting but also historical queries +("why did this binary get really big?") + +The second question allows you to do things like build large amounts of the +codebase *without* materializing anything. If you change a file that is an input +to a deeply nested dependency, perhaps a dependency to 1 million subsequent +input files/build targets, Buck will be able to run the majority of the +build *without* materializing the intermediate files: it will use the remote +execution framework to re-run commands, which will have those files available +already. Some amount of actions will be executed locally, too, to better utilize +available resources, but this will often be a very small proportion of overall +targets. + +These kinds of integrations are key for extremely large repositories to build in +small amounts of time and an active topic of interest. Not only can switching to +Buck provide us faster builds, but it gives us a keen first-party opportunity to +use and explore this design space. + +### Integrated visibility of autogenerated or 3rd party dependencies + +Because Buck wants a complete dependency graph for all components in the system, +from source code to final binary, we are given the opportunity to have deeper +visibility into our 3rd party components and their code. + +For example, all input files to all dependencies, even if downloaded from +remote URLs or from `.crate` files, or checked into the repository normally, +are all accessible and queryable within the Buck build graph through tools +like BXL. This means that we can do things like index *all* of the `jj` the +source code with a tool like [Zoekt], including third-party code *and* even all +auto-generated code, because the steps are visible within Buck. + +Not only does this allow us to run things like search/indexing over the whole +set of source files, it also opens the way to things like vulnerability scanning +tools or large-scale code analysis; Buck integration with [OSV.dev] is already +actively being explored, and it provides an opportunity for us to move away from +3rd party intermediates like GitHub to provide such services. + +[Zoekt]: https://github.com/sourcegraph/zoekt +[OSV.dev]: https://osv.dev/ + +### Early movers advantage + +Given the fact that Cargo currently works well for our needs, why should we +investigate Buck2 now? Wouldn't it be better to wait until much later on? Are +there any major benefits to using it before that point? + +Most people think of large-scale build tools like Nix or Bazel as necessary only +once the project has begin growing out of control. But by that point, there is +often [strong inertia against such a change][xkcd1172] and large amounts of +technical debt in the way, making such migration difficult and costly. + +[xkcd1172]: https://xkcd.com/1172/ + +In a twist, the easiest time to adopt hermetic and scalable build systems is +_early on_ in a project's lifecycle, even when the benefits are not fully +realized, because this is when the cost is lowest, and early introduction can +help prevent impedance mismatches from being introduced that would otherwise +sour the attempt. + +Furthermore, executing early on this means that we are not blocked on +compromises like handling JavaScript, in the case of `diffedit3` — and so +we may be able to execute on certain plans _earlier_ than we otherwise would +have. This is not the same as a free lunch; rather the _path_ to achieving +difficult things is unblocked, even if the road to get there still requires +work. For more information on this, see the section below titled "[Future +endeavours](#future-endeavours)". + +--- + +## Buck2 crash course + +The following is an extremely minimal crash course in Buck2 concepts and how to +use it. + +### Target names + +For users, Buck2 is used to build **targets**, that exists in **packages**, +which are part of a **cell**. Targets are defined in `BUILD` files (discussed +more in a moment) and a single `BUILD` file may have many targets defined +within. + +Targets may have dependencies on other targets, and so all targets collectively +form a directed acyclic graph (DAG) of dependencies, which we call the **target +graph**. + +The most explicit syntax for referring to a target is the following: + +```text +cell//path/to/package:target-name +``` + +A cell is a short name that maps to a directory in the code repository. A +package is a subdirectory underneath the cell that contains the build rules for +the targets. A target is a buildable unit of code, like a binary or a library, +named in the `BUILD` file inside that package (more on that soon). + +`buck2 build` requires at least one target name, like the one above. The above +is an example of a "fully qualified" target name which is an unambiguous +reference. + +A fully-qualified reference to a target works anywhere in the source code tree, +so you can build or test any component no matter what directory you're in. + +So, given a cell named `foobar//` located underneath `code/foobar`, and a +package `bar/baz` in that cell, leads to a file + +```text +code/foobar/bar/baz/BUILD +``` + +Which contains the targets that can be built. + +There are several shorthands for a target: + +- NIH. + +### `BUILD` files + +If we consider tools like `make` and `cargo` to exist at different points in a +spectrum, then Buck is actually much closer to `make` in spirit than most of the +others. + +As noted previously, a `BUILD` file (also sometimes named `BUCK` or `TARGETS`) +for a package lists targets, which specify dependencies on other targets, +forming a directed acyclic graph (DAG) of dependencies called the **target +graph** (which at a very high level sounds similar to a `Makefile`.) + +A `BUILD` file generally looks like this: + +```bazel +cxx_rule(name = 'foo', ...) + +rust_rule(name = 'bar', deps = [ ":foo" ], ...) + +java_rule(name = 'baz', deps = [ ":foo", ":bar" ], ...) +``` + +In this example, `foo` is a C++ binary, `bar` is a Rust binary that depends on +`foo`, and `baz` is a Java binary that depends on both `foo` and `bar`. (It is +easy to see how this is somewhat spritually similar to a Makefile.) + +A target is created by applying a rule, such as `cxx_rule` or `rust_rule`, and +assigning it a `name`. There can only be one target with a given name in a +package, but you can use the same rule multiple times with different names. + +Unlike Make, Buck requires that the body of a rule, its "implementation", must +be defined separately from where the rule is used. A rule can not be defined in +`BUILD` files, but only applied to arguments and bound to a name. + +It is important to note that these rules have no evaluation order defined. You +are allowed to write `cxx_rule` at the bottom of the file in the above example. +The name of the target is what matters, not the order in which the targets are +written. `BUILD` files only describe a graph, not a sequence of operations. + +More generally, a rule is just a function, a target is just the application of a +function to arguments, and the `name` field is a special argument that defines a +"bound name" for the result of the function call. So a `BUILD` file is just a +series of function calls, that might depend on one another. In a more "ordinary" +language, the above example might look like this: + +```bazel +bar = rust_rule(deps = [ foo ], ...) + +baz = java_rule(deps = [ foo, bar ], ...) + +foo = cxx_rule(...) +``` + +While this is a deeper topic, ultimately, the syntax Buck2 uses is a pragmatic +compromise, given the semantics of existing `BUILD` files. We can't change that, +but the "function application" metaphor is a very useful one to keep in mind. + +### Abstract targets & action graphs + +NIH. + +### Target visibility + +Every target can have an associated _visibility list_, which restricts who is +capable of depending on the target. There are two types of visibility: + +- `visibility` - The list of targets that can see and depend on this target. +- `within_view` - The list of targets that this target can see and depend on. + +Visibility is a practical and powerful tool for avoiding accidental +dependencies. For example, an experimental crate can have its `visibility` +prevent general usage, except by specific other targets that are testing it +before committing to a full migration. + +### Package files + +In a package, there can exist a `PACKAGE` file alongside every `BUILD` file. The +package file can specifie metadata about the package, and also control the +default visibility of targets in the package. + +### Mode files + +In order to support concepts like debug and release builds, we use the concept +of "mode files" in Buck2. These are files that contain a list of command line +options to apply to a build to achieve the desired effect. + +For example, to build in debug mode, you can simply include the contents of the +file `mode//debug` (using cell syntax) onto the command line. This can +conveniently be done with "at-file" syntax when invoking `buck2`: + +```sh +buck2 build cli @mode//debug +buck2 build cli @mode//release +``` + +Where `@path/to/file` is the at-file syntax for including the contents of a file +on the command line. This syntax supports `cell//` references to Buck cells, as +well. + +In short, `buck2 build @mode//file` will apply the contents of `file` to your +invocation. We keep a convenient set of these files maintained under the +`mode//` cell, located under [`./buck/mode`](../buck/mode). + +#### At-file syntax + +The `buck2` CLI supports a convenient modern feature called "at-file" syntax, +where the invocation `buck2 @path/to/file` is effectively equivalent to the +bash-ism `buck2 $(cat path/to/file)`, where each line of the file is a single +command line entry, in a consistent and portable way that doesn't have any limit +to the size of the underlying file. + +For example, assuming the file `foo/bar` contained the contents + +```text +--foo=1 +--bar=false +``` + +Then `buck2 --test @foo/bar` and `buck2 --test --foo=1 --bar=false` are +equivalent. + +### Buck Extension Language (BXL) + +NIH. + +## Examples + +Some examples are included below. + +
+Run the jj CLI + +The following shorthand is equivalent to the full target `root//cli:cli`: + +```sh +buck2 run //cli +``` + +This works anywhere in the source tree. It can be shortened to `buck2 run cli` +if you're already in the root of the repository. + +
+ +
+Run BoringSSL bssl speed tests + +```sh +buck2 run third-party//bssl @mode//release -- speed +``` + +
+ +
+Build all Rust dependencies + +```sh +buck2 build third-party//rust +``` + +
+ +
+Download all http_archive dependencies + +Useful for downloading all dependencies, then testing clean build times +afterwards. + +```sh +buck2 build $(buck2 uquery "kind('http_archive', deps('//...'))" | grep third-party//) +``` + +
+ +--- + +## Future endeavours + +NIH + +--- + +## Development notes + +Notes for `jj` developers using Buck2. + +### Build mode reference + +You can pass these to any `build` or `run` invocation. + +- `@mode//debug` +- `@mode//release` + +### Cargo dependency management + +Although Buck2 downloads and runs `rustc` on its own to build crate +dependencies, our `Cargo.toml` build files act as the source of truth for +dependency information in both Cargo and Buck2. + +Updating the dependency graph for Cargo-based projects typically comes in one of +two forms: + +- Updating a dependency version in the top-level workspace `Cargo.toml` file +- Adding a newly required dependency to `[dependencies]` in the `Cargo.toml` + file for a crate + +After doing either of these actions, you can synchronize the Buck2 dependencies +with the Cargo dependencies with the following command: + +```bash +buck2 -v0 run third-party//rust:sync.py +``` + +This must be run from the root of the repository. Eyeball the output of +`jj diff` and make sure it looks fine, then test, before committing the changes. + +This step will re-synchronize all `third-party//rust` crates with the versions +in the workspace Cargo file, and then also update the `BUILD` files in the +source code with any newly added build dependencies that were added or removed +(not just updated). + +### `rust-analyzer` support + +> [!IMPORTANT] +> You **MUST** have `rustc` nightly 1.82+ installed for this to work, as it +> requires the `discoverConfig` option in `rust-analyzer`, which may not +> otherwise be available to you. If your editor or IDE integration pre-packages +> `rust-analyzer`, you may not need to do this. + +As of 2024-08-27, there is rather robust support for `rust-analyzer` in your +IDE, thanks to the `rust-project` integration for Buck2, located under +[`integrations/rust-project`](https://github.com/facebook/buck2/tree/main/integrations/rust-project) +in the Buck2 source. + +Prebuilt binaries will come later, but for now, you can build `rust-project` and +a compatible version of `buck2` from the source repository: + +```sh +jj git clone --colocate https://github.com/facebook/buck2 ~/buck2 +cd ~/buck2 +cargo build --release --bin buck2 --bin rust-project +``` + +You should have `buck` and `rust-project` underneath the `target/release` build +directory. Now add them to your `$PATH` and try to build `jj`: + +```sh +cd ~/src/jj +export PATH="$HOME/buck2/target/release:$PATH" +buck2 build cli +``` + +If this works, then the compatible `rust-project` will be available in your +`$PATH`, and you can now launch your editor with the proper configuration to use +`rust-project`. + +> [!IMPORTANT] +> Your editor must inherit the `$PATH` environment variable from your shell in +> this example. You need to configure it otherwise, if it does not. + +#### Visual Studio Code + +There is a preconfigured `.vscode/settings.json` file in the repository that +should do the work, so make sure you launch a new window with the `jj` +repository open and the new `buck2` and `rust-project` binaries in your `$PATH`: + +```sh +code . +``` + +Now open an `.rs` file and your typical features like `Right Click -> Go To +Definition` should work. + +#### Zed + +TBD. + +#### Helix + +TBD. + +#### Neovim + +TBD. + +--- + +## TODO + known Buck2 bugs + +TODO list: + +- [ ] `rust-analyzer` working OOTB + - Working, but buggy. + - More details below +- [ ] Build time improvements + - Clean from scratch build is still about 2x slower than `cargo` + - Incremental rebuilds are quite comparable, though +- [ ] hermetic toolchain + - [x] ~~system bootstrap python via + ~~ + - [ ] rustc + - [ ] clang/lld +- [ ] remote caching +- [ ] remote execution +- macOS: + - [ ] x86_64: get build working + - [ ] requires fixes to `smoltar` + - ~~mostly due to lack of an available x86_64 macOS machine~~ `macos-13` + seems to be available + - [ ] get working in nix devShell, somehow + - linking `libiconv` is an issue, as usual + - requires the right shell settings, I assume +- Linux + - [x] ~~aarch64-linux: get `bssl-sys` working with bindgen~~ + - [ ] remove workaround: aarch64-linux requires `bindgen` in `$PATH`, for now +- Windows + - [ ] Is hermetic MSVC possible? + - [ ] [windows_shim for DotSlash](https://dotslash-cli.com/docs/windows/), + improving Windows ergonomics + - Requires committing binary `.exe` files to the repo, so optimized size is + critical + - Currently does not exist upstream; TBA + +Miscellaneous things: + +- [ ] Why does `buck2 build @mode//release` and then `buck2 build @mode//debug` + cause a redownload of `.crate` files? + - Only happens when switching modes; incremental builds with the same mode are + fine + - Early cutoff kicks in so this only incurs a few seconds of extra time + typically, because once Buck sees that the `.crate` files haven't actually + changed it can quit early. + +Upstream bugs: + +- RE/AC support: + - [ ] Missing `ActionCache` support + - [x] ~~File size logic bugs ~~ + - [x] ~~Buggy concurrency limiter ~~ + - [ ] Failure diagonstics +- `rust-analyzer` + `rust-project` + - [x] ~~`linked_projects` support ~~ + - [x] ~~Unbreak OSS use of `rust-project` ~~ + - [x] ~~`--sysroot-mode` support for `rust-project` ~~ + - [x] ~~`rust-project check` is broken ~~ + - [x] ~~Invalid dep graph due to lack of `sysroot_src`~~ + - + - + - [ ] Prebuilt `rust-project` binaries + dotslash +- Miscellaneous + - [x] ~~`buck2` aarch64-linux binaries don't with 16k page size ~~ + - [ ] Aggressively annoying download warnings + - [ ] Distributing log files + - Buck2 logs are included in CI artifacts, but not published anywhere + + + +[Contributing]: https://martinvonz.github.io/jj/latest/contributing/ +[Buck2]: https://buck2.build/ +[Dotslash]: https://dotslash-cli.com/