build: add Rust crate vendoring #3
0
src/machoke/Cargo.lock → Cargo.lock
generated
0
src/machoke/Cargo.lock → Cargo.lock
generated
5
Cargo.toml
Normal file
5
Cargo.toml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
[workspace]
|
||||||
|
members = [
|
||||||
|
"src/machoke",
|
||||||
|
]
|
||||||
|
resolver = "3"
|
||||||
@@ -1,5 +1,9 @@
|
|||||||
module(name = "alexion", version = "0.1.0")
|
module(
|
||||||
|
name = "alexion",
|
||||||
|
version = "0.1.0",
|
||||||
|
)
|
||||||
|
|
||||||
|
bazel_dep(name = "bazel_skylib", version = "1.8.2")
|
||||||
bazel_dep(name = "rules_rust", version = "0.74.0")
|
bazel_dep(name = "rules_rust", version = "0.74.0")
|
||||||
|
|
||||||
rust = use_extension("//bazel:rust.bzl", "rust")
|
rust = use_extension("//bazel:rust.bzl", "rust")
|
||||||
|
|||||||
49
README.md
49
README.md
@@ -2,16 +2,45 @@
|
|||||||
|
|
||||||
This is my monorepo, started in 2026.
|
This is my monorepo, started in 2026.
|
||||||
|
|
||||||
## Monorepo Structure
|
## Monorepo structure
|
||||||
```
|
|
||||||
dev/ Monorepo root
|
```text
|
||||||
├── .archive/ Archived projects
|
dev/ Monorepo root
|
||||||
├── configs/ Declarative configuration
|
├── bazel/ Bazel support files
|
||||||
│ └── nixos/ NixOS hosts, modules, guests, registry, and secrets
|
├── configs/ Declarative configuration
|
||||||
├── docs/ Obsidian vault / Second brain
|
│ └── nixos/ NixOS hosts, modules, guests, registry, and secrets
|
||||||
├── src/ Projects
|
├── docs/ Repository documentation
|
||||||
│ └── tools/ Projects that are tools
|
├── src/ Projects
|
||||||
└── third_party/ Open source tools, libraries or otherwise
|
│ └── dotfiles/ Home and system configuration
|
||||||
|
└── third_party/ External source and vendoring support
|
||||||
|
└── crates/ Generated Rust crate sources and Bazel targets
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Rust dependencies
|
||||||
|
|
||||||
|
The repository root contains one Cargo dependency graph.
|
||||||
|
Each Rust project declares its dependencies in its local `Cargo.toml` file.
|
||||||
|
Add each Rust project to the `members` list in the root `Cargo.toml` file.
|
||||||
|
Use explicit member paths because the Bazel generator does not expand workspace globs.
|
||||||
|
|
||||||
|
Update the shared lockfile after changing a project manifest:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cargo generate-lockfile
|
||||||
|
```
|
||||||
|
|
||||||
|
Regenerate local crate sources and Bazel targets:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
bazel run //third_party:vendor_crates
|
||||||
|
```
|
||||||
|
|
||||||
|
Reference each dependency with an explicit local Bazel label:
|
||||||
|
|
||||||
|
```starlark
|
||||||
|
deps = ["//third_party/crates:crate_name"]
|
||||||
|
```
|
||||||
|
|
||||||
|
Commit the generated files under `third_party/crates/`.
|
||||||
|
Do not edit generated files manually.
|
||||||
|
|
||||||
|
|||||||
16
third_party/BUILD
vendored
Normal file
16
third_party/BUILD
vendored
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
load("@rules_rust//crate_universe:defs.bzl", "crates_vendor")
|
||||||
|
|
||||||
|
sh_binary(
|
||||||
|
name = "bazel_for_cargo_bazel",
|
||||||
|
srcs = ["bazel-for-cargo-bazel.sh"],
|
||||||
|
)
|
||||||
|
|
||||||
|
crates_vendor(
|
||||||
|
name = "vendor_crates",
|
||||||
|
bazel = ":bazel_for_cargo_bazel",
|
||||||
|
cargo_lockfile = "//:Cargo.lock",
|
||||||
|
manifests = ["//:Cargo.toml"],
|
||||||
|
mode = "local",
|
||||||
|
tags = ["manual"],
|
||||||
|
vendor_path = "crates",
|
||||||
|
)
|
||||||
17
third_party/bazel-for-cargo-bazel.sh
vendored
Executable file
17
third_party/bazel-for-cargo-bazel.sh
vendored
Executable file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
is_info=false
|
||||||
|
for argument in "$@"; do
|
||||||
|
if [[ "$argument" == "info" ]]; then
|
||||||
|
is_info=true
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if $is_info; then
|
||||||
|
bazel "$@" | sed -E \
|
||||||
|
's/^release: release ([0-9]+\.[0-9]+\.[0-9]+).*/release: \1/'
|
||||||
|
else
|
||||||
|
exec bazel "$@"
|
||||||
|
fi
|
||||||
31
third_party/crates/BUILD.bazel
vendored
Normal file
31
third_party/crates/BUILD.bazel
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
###############################################################################
|
||||||
|
# @generated
|
||||||
|
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
|
||||||
|
# regenerate this file, run the following:
|
||||||
|
#
|
||||||
|
# bazel run @@//third_party:vendor_crates
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
package(default_visibility = ["//visibility:public"])
|
||||||
|
|
||||||
|
exports_files(
|
||||||
|
[
|
||||||
|
"cargo-bazel.json",
|
||||||
|
"crates.bzl",
|
||||||
|
"defs.bzl",
|
||||||
|
] + glob(
|
||||||
|
include = ["*.bazel"],
|
||||||
|
allow_empty = True,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "srcs",
|
||||||
|
srcs = glob(
|
||||||
|
include = [
|
||||||
|
"*.bazel",
|
||||||
|
"*.bzl",
|
||||||
|
],
|
||||||
|
allow_empty = True,
|
||||||
|
),
|
||||||
|
)
|
||||||
47
third_party/crates/alias_rules.bzl
vendored
Normal file
47
third_party/crates/alias_rules.bzl
vendored
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
"""Alias that transitions its target to `compilation_mode=opt`. Use `transition_alias="opt"` to enable."""
|
||||||
|
|
||||||
|
load("@rules_cc//cc:defs.bzl", "CcInfo")
|
||||||
|
load("@rules_rust//rust:rust_common.bzl", "COMMON_PROVIDERS")
|
||||||
|
|
||||||
|
def _transition_alias_impl(ctx):
|
||||||
|
# `ctx.attr.actual` is a list of 1 item due to the transition
|
||||||
|
providers = [ctx.attr.actual[0][provider] for provider in COMMON_PROVIDERS]
|
||||||
|
if CcInfo in ctx.attr.actual[0]:
|
||||||
|
providers.append(ctx.attr.actual[0][CcInfo])
|
||||||
|
return providers
|
||||||
|
|
||||||
|
def _change_compilation_mode(compilation_mode):
|
||||||
|
def _change_compilation_mode_impl(_settings, _attr):
|
||||||
|
return {
|
||||||
|
"//command_line_option:compilation_mode": compilation_mode,
|
||||||
|
}
|
||||||
|
|
||||||
|
return transition(
|
||||||
|
implementation = _change_compilation_mode_impl,
|
||||||
|
inputs = [],
|
||||||
|
outputs = [
|
||||||
|
"//command_line_option:compilation_mode",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
def _transition_alias_rule(compilation_mode):
|
||||||
|
return rule(
|
||||||
|
implementation = _transition_alias_impl,
|
||||||
|
provides = COMMON_PROVIDERS,
|
||||||
|
attrs = {
|
||||||
|
"actual": attr.label(
|
||||||
|
mandatory = True,
|
||||||
|
doc = "`rust_library()` target to transition to `compilation_mode=opt`.",
|
||||||
|
providers = COMMON_PROVIDERS,
|
||||||
|
cfg = _change_compilation_mode(compilation_mode),
|
||||||
|
),
|
||||||
|
"_allowlist_function_transition": attr.label(
|
||||||
|
default = "@bazel_tools//tools/allowlists/function_transition_allowlist",
|
||||||
|
),
|
||||||
|
},
|
||||||
|
doc = "Transitions a Rust library crate to the `compilation_mode=opt`.",
|
||||||
|
)
|
||||||
|
|
||||||
|
transition_alias_dbg = _transition_alias_rule("dbg")
|
||||||
|
transition_alias_fastbuild = _transition_alias_rule("fastbuild")
|
||||||
|
transition_alias_opt = _transition_alias_rule("opt")
|
||||||
431
third_party/crates/crates.bzl
vendored
Normal file
431
third_party/crates/crates.bzl
vendored
Normal file
@@ -0,0 +1,431 @@
|
|||||||
|
###############################################################################
|
||||||
|
# @generated
|
||||||
|
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
|
||||||
|
# regenerate this file, run the following:
|
||||||
|
#
|
||||||
|
# bazel run @@//third_party:vendor_crates
|
||||||
|
###############################################################################
|
||||||
|
"""
|
||||||
|
# `crates_repository` API
|
||||||
|
|
||||||
|
- [aliases](#aliases)
|
||||||
|
- [crate_edition](#crate_edition)
|
||||||
|
- [crate_deps](#crate_deps)
|
||||||
|
- [all_crate_deps](#all_crate_deps)
|
||||||
|
- [crate_repositories](#crate_repositories)
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
load("@bazel_skylib//lib:selects.bzl", "selects")
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# MACROS API
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
# An identifier that represent common dependencies (unconditional).
|
||||||
|
_COMMON_CONDITION = ""
|
||||||
|
|
||||||
|
def _flatten_dependency_maps(all_dependency_maps):
|
||||||
|
"""Flatten a list of dependency maps into one dictionary.
|
||||||
|
|
||||||
|
Dependency maps have the following structure:
|
||||||
|
|
||||||
|
```python
|
||||||
|
DEPENDENCIES_MAP = {
|
||||||
|
# The first key in the map is a Bazel package
|
||||||
|
# name of the workspace this file is defined in.
|
||||||
|
"workspace_member_package": {
|
||||||
|
|
||||||
|
# Not all dependencies are supported for all platforms.
|
||||||
|
# the condition key is the condition required to be true
|
||||||
|
# on the host platform.
|
||||||
|
"condition": {
|
||||||
|
|
||||||
|
# An alias to a crate target. # The label of the crate target the
|
||||||
|
# Aliases are only crate names. # package name refers to.
|
||||||
|
"package_name": "@full//:label",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Args:
|
||||||
|
all_dependency_maps (list): A list of dicts as described above
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
dict: A dictionary as described above
|
||||||
|
"""
|
||||||
|
dependencies = {}
|
||||||
|
|
||||||
|
for workspace_deps_map in all_dependency_maps:
|
||||||
|
for pkg_name, conditional_deps_map in workspace_deps_map.items():
|
||||||
|
if pkg_name not in dependencies:
|
||||||
|
non_frozen_map = dict()
|
||||||
|
for key, values in conditional_deps_map.items():
|
||||||
|
non_frozen_map.update({key: dict(values.items())})
|
||||||
|
dependencies.setdefault(pkg_name, non_frozen_map)
|
||||||
|
continue
|
||||||
|
|
||||||
|
for condition, deps_map in conditional_deps_map.items():
|
||||||
|
# If the condition has not been recorded, do so and continue
|
||||||
|
if condition not in dependencies[pkg_name]:
|
||||||
|
dependencies[pkg_name].setdefault(condition, dict(deps_map.items()))
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Alert on any miss-matched dependencies
|
||||||
|
inconsistent_entries = []
|
||||||
|
for crate_name, crate_label in deps_map.items():
|
||||||
|
existing = dependencies[pkg_name][condition].get(crate_name)
|
||||||
|
if existing and existing != crate_label:
|
||||||
|
inconsistent_entries.append((crate_name, existing, crate_label))
|
||||||
|
dependencies[pkg_name][condition].update({crate_name: crate_label})
|
||||||
|
|
||||||
|
return dependencies
|
||||||
|
|
||||||
|
def crate_deps(deps, package_name = None):
|
||||||
|
"""Finds the fully qualified label of the requested crates for the package where this macro is called.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
deps (list): The desired list of crate targets.
|
||||||
|
package_name (str, optional): The package name of the set of dependencies to look up.
|
||||||
|
Defaults to `native.package_name()`.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
list: A list of labels to generated rust targets (str)
|
||||||
|
"""
|
||||||
|
|
||||||
|
if not deps:
|
||||||
|
return []
|
||||||
|
|
||||||
|
if package_name == None:
|
||||||
|
package_name = native.package_name()
|
||||||
|
|
||||||
|
# Join both sets of dependencies
|
||||||
|
dependencies = _flatten_dependency_maps([
|
||||||
|
_NORMAL_DEPENDENCIES,
|
||||||
|
_NORMAL_DEV_DEPENDENCIES,
|
||||||
|
_PROC_MACRO_DEPENDENCIES,
|
||||||
|
_PROC_MACRO_DEV_DEPENDENCIES,
|
||||||
|
_BUILD_DEPENDENCIES,
|
||||||
|
_BUILD_PROC_MACRO_DEPENDENCIES,
|
||||||
|
]).pop(package_name, {})
|
||||||
|
|
||||||
|
# Combine all conditional packages so we can easily index over a flat list
|
||||||
|
# TODO: Perhaps this should actually return select statements and maintain
|
||||||
|
# the conditionals of the dependencies
|
||||||
|
flat_deps = {}
|
||||||
|
for deps_set in dependencies.values():
|
||||||
|
for crate_name, crate_label in deps_set.items():
|
||||||
|
flat_deps.update({crate_name: crate_label})
|
||||||
|
|
||||||
|
missing_crates = []
|
||||||
|
crate_targets = []
|
||||||
|
for crate_target in deps:
|
||||||
|
if crate_target not in flat_deps:
|
||||||
|
missing_crates.append(crate_target)
|
||||||
|
else:
|
||||||
|
crate_targets.append(flat_deps[crate_target])
|
||||||
|
|
||||||
|
if missing_crates:
|
||||||
|
fail("Could not find crates `{}` among dependencies of `{}`. Available dependencies were `{}`".format(
|
||||||
|
missing_crates,
|
||||||
|
package_name,
|
||||||
|
dependencies,
|
||||||
|
))
|
||||||
|
|
||||||
|
return crate_targets
|
||||||
|
|
||||||
|
def crate_edition(package_name = None):
|
||||||
|
"""Finds the Rust edition for the package where this macro is called.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
package_name (str, optional): The package name whose edition should be
|
||||||
|
looked up. Defaults to `native.package_name()` when unset.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: The Rust edition declared by the package's Cargo.toml file.
|
||||||
|
"""
|
||||||
|
if package_name == None:
|
||||||
|
package_name = native.package_name()
|
||||||
|
|
||||||
|
if package_name not in _CRATE_EDITIONS:
|
||||||
|
fail("Tried to get crate_edition for package " + package_name + " but that package had no Cargo.toml file")
|
||||||
|
|
||||||
|
return _CRATE_EDITIONS[package_name]
|
||||||
|
|
||||||
|
def all_crate_deps(
|
||||||
|
normal = False,
|
||||||
|
normal_dev = False,
|
||||||
|
proc_macro = False,
|
||||||
|
proc_macro_dev = False,
|
||||||
|
build = False,
|
||||||
|
build_proc_macro = False,
|
||||||
|
package_name = None):
|
||||||
|
"""Finds the fully qualified label of all requested direct crate dependencies \
|
||||||
|
for the package where this macro is called.
|
||||||
|
|
||||||
|
If no parameters are set, all normal dependencies are returned. Setting any one flag will
|
||||||
|
otherwise impact the contents of the returned list.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
normal (bool, optional): If True, normal dependencies are included in the
|
||||||
|
output list.
|
||||||
|
normal_dev (bool, optional): If True, normal dev dependencies will be
|
||||||
|
included in the output list.
|
||||||
|
proc_macro (bool, optional): If True, proc_macro dependencies are included
|
||||||
|
in the output list.
|
||||||
|
proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are
|
||||||
|
included in the output list.
|
||||||
|
build (bool, optional): If True, build dependencies are included
|
||||||
|
in the output list.
|
||||||
|
build_proc_macro (bool, optional): If True, build proc_macro dependencies are
|
||||||
|
included in the output list.
|
||||||
|
package_name (str, optional): The package name of the set of dependencies to look up.
|
||||||
|
Defaults to `native.package_name()` when unset.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
list: A list of labels to generated rust targets (str)
|
||||||
|
"""
|
||||||
|
|
||||||
|
if package_name == None:
|
||||||
|
package_name = native.package_name()
|
||||||
|
|
||||||
|
# Determine the relevant maps to use
|
||||||
|
all_dependency_maps = []
|
||||||
|
if normal:
|
||||||
|
all_dependency_maps.append(_NORMAL_DEPENDENCIES)
|
||||||
|
if normal_dev:
|
||||||
|
all_dependency_maps.append(_NORMAL_DEV_DEPENDENCIES)
|
||||||
|
if proc_macro:
|
||||||
|
all_dependency_maps.append(_PROC_MACRO_DEPENDENCIES)
|
||||||
|
if proc_macro_dev:
|
||||||
|
all_dependency_maps.append(_PROC_MACRO_DEV_DEPENDENCIES)
|
||||||
|
if build:
|
||||||
|
all_dependency_maps.append(_BUILD_DEPENDENCIES)
|
||||||
|
if build_proc_macro:
|
||||||
|
all_dependency_maps.append(_BUILD_PROC_MACRO_DEPENDENCIES)
|
||||||
|
|
||||||
|
# Default to always using normal dependencies
|
||||||
|
if not all_dependency_maps:
|
||||||
|
all_dependency_maps.append(_NORMAL_DEPENDENCIES)
|
||||||
|
|
||||||
|
dependencies = _flatten_dependency_maps(all_dependency_maps).pop(package_name, None)
|
||||||
|
|
||||||
|
if not dependencies:
|
||||||
|
if dependencies == None:
|
||||||
|
fail("Tried to get all_crate_deps for package " + package_name + " but that package had no Cargo.toml file")
|
||||||
|
else:
|
||||||
|
return []
|
||||||
|
|
||||||
|
crate_deps = list(dependencies.pop(_COMMON_CONDITION, {}).values())
|
||||||
|
for condition, deps in dependencies.items():
|
||||||
|
crate_deps += selects.with_or({
|
||||||
|
tuple(_CONDITIONS[condition]): deps.values(),
|
||||||
|
"//conditions:default": [],
|
||||||
|
})
|
||||||
|
|
||||||
|
return crate_deps
|
||||||
|
|
||||||
|
def aliases(
|
||||||
|
normal = False,
|
||||||
|
normal_dev = False,
|
||||||
|
proc_macro = False,
|
||||||
|
proc_macro_dev = False,
|
||||||
|
build = False,
|
||||||
|
build_proc_macro = False,
|
||||||
|
package_name = None):
|
||||||
|
"""Produces a map of Crate alias names to their original label
|
||||||
|
|
||||||
|
If no dependency kinds are specified, `normal` and `proc_macro` are used by default.
|
||||||
|
Setting any one flag will otherwise determine the contents of the returned dict.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
normal (bool, optional): If True, normal dependencies are included in the
|
||||||
|
output list.
|
||||||
|
normal_dev (bool, optional): If True, normal dev dependencies will be
|
||||||
|
included in the output list..
|
||||||
|
proc_macro (bool, optional): If True, proc_macro dependencies are included
|
||||||
|
in the output list.
|
||||||
|
proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are
|
||||||
|
included in the output list.
|
||||||
|
build (bool, optional): If True, build dependencies are included
|
||||||
|
in the output list.
|
||||||
|
build_proc_macro (bool, optional): If True, build proc_macro dependencies are
|
||||||
|
included in the output list.
|
||||||
|
package_name (str, optional): The package name of the set of dependencies to look up.
|
||||||
|
Defaults to `native.package_name()` when unset.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
dict: The aliases of all associated packages
|
||||||
|
"""
|
||||||
|
if package_name == None:
|
||||||
|
package_name = native.package_name()
|
||||||
|
|
||||||
|
# Determine the relevant maps to use
|
||||||
|
all_aliases_maps = []
|
||||||
|
if normal:
|
||||||
|
all_aliases_maps.append(_NORMAL_ALIASES)
|
||||||
|
if normal_dev:
|
||||||
|
all_aliases_maps.append(_NORMAL_DEV_ALIASES)
|
||||||
|
if proc_macro:
|
||||||
|
all_aliases_maps.append(_PROC_MACRO_ALIASES)
|
||||||
|
if proc_macro_dev:
|
||||||
|
all_aliases_maps.append(_PROC_MACRO_DEV_ALIASES)
|
||||||
|
if build:
|
||||||
|
all_aliases_maps.append(_BUILD_ALIASES)
|
||||||
|
if build_proc_macro:
|
||||||
|
all_aliases_maps.append(_BUILD_PROC_MACRO_ALIASES)
|
||||||
|
|
||||||
|
# Default to always using normal aliases
|
||||||
|
if not all_aliases_maps:
|
||||||
|
all_aliases_maps.append(_NORMAL_ALIASES)
|
||||||
|
all_aliases_maps.append(_PROC_MACRO_ALIASES)
|
||||||
|
|
||||||
|
aliases = _flatten_dependency_maps(all_aliases_maps).pop(package_name, None)
|
||||||
|
|
||||||
|
if not aliases:
|
||||||
|
return dict()
|
||||||
|
|
||||||
|
common_items = aliases.pop(_COMMON_CONDITION, {}).items()
|
||||||
|
|
||||||
|
# If there are only common items in the dictionary, immediately return them
|
||||||
|
if not len(aliases.keys()) == 1:
|
||||||
|
return dict(common_items)
|
||||||
|
|
||||||
|
# Build a single select statement where each conditional has accounted for the
|
||||||
|
# common set of aliases.
|
||||||
|
crate_aliases = {"//conditions:default": dict(common_items)}
|
||||||
|
for condition, deps in aliases.items():
|
||||||
|
condition_triples = _CONDITIONS[condition]
|
||||||
|
for triple in condition_triples:
|
||||||
|
if triple in crate_aliases:
|
||||||
|
crate_aliases[triple].update(deps)
|
||||||
|
else:
|
||||||
|
crate_aliases.update({triple: dict(deps.items() + common_items)})
|
||||||
|
|
||||||
|
return select(crate_aliases)
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# WORKSPACE MEMBER DEPS, ALIASES, AND EDITIONS
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
_CRATE_EDITIONS = {
|
||||||
|
"src/machoke": "2024",
|
||||||
|
}
|
||||||
|
|
||||||
|
_NORMAL_DEPENDENCIES = {
|
||||||
|
"src/machoke": {
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
_NORMAL_ALIASES = {
|
||||||
|
"src/machoke": {
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
_NORMAL_DEV_DEPENDENCIES = {
|
||||||
|
"src/machoke": {
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
_NORMAL_DEV_ALIASES = {
|
||||||
|
"src/machoke": {
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
_PROC_MACRO_DEPENDENCIES = {
|
||||||
|
"src/machoke": {
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
_PROC_MACRO_ALIASES = {
|
||||||
|
"src/machoke": {
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
_PROC_MACRO_DEV_DEPENDENCIES = {
|
||||||
|
"src/machoke": {
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
_PROC_MACRO_DEV_ALIASES = {
|
||||||
|
"src/machoke": {
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
_BUILD_DEPENDENCIES = {
|
||||||
|
"src/machoke": {
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
_BUILD_ALIASES = {
|
||||||
|
"src/machoke": {
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
_BUILD_PROC_MACRO_DEPENDENCIES = {
|
||||||
|
"src/machoke": {
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
_BUILD_PROC_MACRO_ALIASES = {
|
||||||
|
"src/machoke": {
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
_CONDITIONS = {
|
||||||
|
"aarch64-apple-darwin": ["@rules_rust//rust/platform:aarch64-apple-darwin"],
|
||||||
|
"aarch64-apple-ios": ["@rules_rust//rust/platform:aarch64-apple-ios"],
|
||||||
|
"aarch64-apple-ios-macabi": ["@rules_rust//rust/platform:aarch64-apple-ios-macabi"],
|
||||||
|
"aarch64-apple-ios-sim": ["@rules_rust//rust/platform:aarch64-apple-ios-sim"],
|
||||||
|
"aarch64-linux-android": ["@rules_rust//rust/platform:aarch64-linux-android"],
|
||||||
|
"aarch64-pc-windows-msvc": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc"],
|
||||||
|
"aarch64-unknown-fuchsia": ["@rules_rust//rust/platform:aarch64-unknown-fuchsia"],
|
||||||
|
"aarch64-unknown-linux-gnu": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu"],
|
||||||
|
"aarch64-unknown-nixos-gnu": ["@rules_rust//rust/platform:aarch64-unknown-nixos-gnu"],
|
||||||
|
"aarch64-unknown-none": ["@rules_rust//rust/platform:aarch64-unknown-none"],
|
||||||
|
"aarch64-unknown-nto-qnx710": ["@rules_rust//rust/platform:aarch64-unknown-nto-qnx710"],
|
||||||
|
"aarch64-unknown-uefi": ["@rules_rust//rust/platform:aarch64-unknown-uefi"],
|
||||||
|
"arm-unknown-linux-gnueabi": ["@rules_rust//rust/platform:arm-unknown-linux-gnueabi"],
|
||||||
|
"arm-unknown-linux-musleabi": ["@rules_rust//rust/platform:arm-unknown-linux-musleabi"],
|
||||||
|
"armv7-linux-androideabi": ["@rules_rust//rust/platform:armv7-linux-androideabi"],
|
||||||
|
"armv7-unknown-linux-gnueabi": ["@rules_rust//rust/platform:armv7-unknown-linux-gnueabi"],
|
||||||
|
"i686-apple-darwin": ["@rules_rust//rust/platform:i686-apple-darwin"],
|
||||||
|
"i686-linux-android": ["@rules_rust//rust/platform:i686-linux-android"],
|
||||||
|
"i686-pc-windows-msvc": ["@rules_rust//rust/platform:i686-pc-windows-msvc"],
|
||||||
|
"i686-unknown-freebsd": ["@rules_rust//rust/platform:i686-unknown-freebsd"],
|
||||||
|
"i686-unknown-linux-gnu": ["@rules_rust//rust/platform:i686-unknown-linux-gnu"],
|
||||||
|
"loongarch64-unknown-linux-gnu": ["@rules_rust//rust/platform:loongarch64-unknown-linux-gnu"],
|
||||||
|
"mips-unknown-linux-gnu": ["@rules_rust//rust/platform:mips-unknown-linux-gnu"],
|
||||||
|
"powerpc-unknown-linux-gnu": ["@rules_rust//rust/platform:powerpc-unknown-linux-gnu"],
|
||||||
|
"riscv32imac-unknown-none-elf": ["@rules_rust//rust/platform:riscv32imac-unknown-none-elf"],
|
||||||
|
"riscv32imc-unknown-none-elf": ["@rules_rust//rust/platform:riscv32imc-unknown-none-elf"],
|
||||||
|
"riscv64gc-unknown-linux-gnu": ["@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu"],
|
||||||
|
"riscv64gc-unknown-none-elf": ["@rules_rust//rust/platform:riscv64gc-unknown-none-elf"],
|
||||||
|
"s390x-unknown-linux-gnu": ["@rules_rust//rust/platform:s390x-unknown-linux-gnu"],
|
||||||
|
"sparc64-unknown-linux-gnu": ["@rules_rust//rust/platform:sparc64-unknown-linux-gnu"],
|
||||||
|
"sparc64-unknown-netbsd": ["@rules_rust//rust/platform:sparc64-unknown-netbsd"],
|
||||||
|
"sparc64-unknown-openbsd": ["@rules_rust//rust/platform:sparc64-unknown-openbsd"],
|
||||||
|
"thumbv6m-none-eabi": ["@rules_rust//rust/platform:thumbv6m-none-eabi"],
|
||||||
|
"thumbv7em-none-eabi": ["@rules_rust//rust/platform:thumbv7em-none-eabi"],
|
||||||
|
"thumbv7em-none-eabihf": ["@rules_rust//rust/platform:thumbv7em-none-eabihf"],
|
||||||
|
"thumbv7m-none-eabi": ["@rules_rust//rust/platform:thumbv7m-none-eabi"],
|
||||||
|
"thumbv8m.main-none-eabi": ["@rules_rust//rust/platform:thumbv8m.main-none-eabi"],
|
||||||
|
"thumbv8m.main-none-eabihf": ["@rules_rust//rust/platform:thumbv8m.main-none-eabihf"],
|
||||||
|
"wasm32-unknown-emscripten": ["@rules_rust//rust/platform:wasm32-unknown-emscripten"],
|
||||||
|
"wasm32-unknown-unknown": ["@rules_rust//rust/platform:wasm32-unknown-unknown"],
|
||||||
|
"wasm32-wasip1": ["@rules_rust//rust/platform:wasm32-wasip1"],
|
||||||
|
"wasm32-wasip1-threads": ["@rules_rust//rust/platform:wasm32-wasip1-threads"],
|
||||||
|
"wasm32-wasip2": ["@rules_rust//rust/platform:wasm32-wasip2"],
|
||||||
|
"x86_64-apple-darwin": ["@rules_rust//rust/platform:x86_64-apple-darwin"],
|
||||||
|
"x86_64-apple-ios": ["@rules_rust//rust/platform:x86_64-apple-ios"],
|
||||||
|
"x86_64-apple-ios-macabi": ["@rules_rust//rust/platform:x86_64-apple-ios-macabi"],
|
||||||
|
"x86_64-linux-android": ["@rules_rust//rust/platform:x86_64-linux-android"],
|
||||||
|
"x86_64-pc-windows-msvc": ["@rules_rust//rust/platform:x86_64-pc-windows-msvc"],
|
||||||
|
"x86_64-unknown-freebsd": ["@rules_rust//rust/platform:x86_64-unknown-freebsd"],
|
||||||
|
"x86_64-unknown-fuchsia": ["@rules_rust//rust/platform:x86_64-unknown-fuchsia"],
|
||||||
|
"x86_64-unknown-linux-gnu": ["@rules_rust//rust/platform:x86_64-unknown-linux-gnu"],
|
||||||
|
"x86_64-unknown-nixos-gnu": ["@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"],
|
||||||
|
"x86_64-unknown-none": ["@rules_rust//rust/platform:x86_64-unknown-none"],
|
||||||
|
"x86_64-unknown-uefi": ["@rules_rust//rust/platform:x86_64-unknown-uefi"],
|
||||||
|
}
|
||||||
23
third_party/crates/defs.bzl
vendored
Normal file
23
third_party/crates/defs.bzl
vendored
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
###############################################################################
|
||||||
|
# @generated
|
||||||
|
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
|
||||||
|
# regenerate this file, run the following:
|
||||||
|
#
|
||||||
|
# bazel run @@//third_party:vendor_crates
|
||||||
|
###############################################################################
|
||||||
|
"""Deprecated: re-exports the crate_universe macros from `:crates.bzl`."""
|
||||||
|
|
||||||
|
load(
|
||||||
|
":crates.bzl",
|
||||||
|
_aliases = "aliases",
|
||||||
|
_all_crate_deps = "all_crate_deps",
|
||||||
|
_crate_deps = "crate_deps",
|
||||||
|
_crate_edition = "crate_edition",
|
||||||
|
_crate_repositories = "crate_repositories",
|
||||||
|
)
|
||||||
|
|
||||||
|
aliases = _aliases
|
||||||
|
all_crate_deps = _all_crate_deps
|
||||||
|
crate_deps = _crate_deps
|
||||||
|
crate_edition = _crate_edition
|
||||||
|
crate_repositories = _crate_repositories
|
||||||
Reference in New Issue
Block a user