anki/rslib/BUILD.bazel
Damien Elmes cf2613e869 update Rust deps
- tokio 1.0
- updated reqwest, thanks to Rumo
- other minor dep updates

the reqwest build file has been split into two, as it was awkward
to manually update the combined file, and the platform gate is now
on the target in rslib/
2021-04-27 22:18:12 +10:00

183 lines
4.6 KiB
Python

# Copyright: Ankitects Pty Ltd and contributors
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
load("@rules_proto//proto:defs.bzl", "proto_library")
load("@rules_rust//rust:rust.bzl", "rust_binary", "rust_library", "rust_test")
load("@rules_rust//cargo:cargo_build_script.bzl", "cargo_build_script")
load(":rustfmt.bzl", "rustfmt_fix", "rustfmt_test")
load(":clang_format.bzl", "proto_format")
load("//ts:sql_format.bzl", "sql_format")
# Build script
#######################
cargo_build_script(
name = "build_script",
srcs = glob(["build/*.rs"]),
build_script_env = {
"BACKEND_PROTO": "$(location backend.proto)",
"PROTOC": "$(location @com_google_protobuf//:protoc)",
"RSLIB_FTL_ROOT": "$(location @rslib_ftl//:l10n.toml)",
"EXTRA_FTL_ROOT": "$(location @extra_ftl//:l10n.toml)",
"BAZEL": "1",
},
crate_root = "build/main.rs",
data = [
"//ftl",
"backend.proto",
"@com_google_protobuf//:protoc",
# bazel requires us to list these out separately
"@rslib_ftl//:l10n.toml",
"@extra_ftl//:l10n.toml",
],
deps = [
"//rslib/cargo:prost_build",
],
)
# Library
#######################
_anki_compile_data = glob([
"src/**/*.sql",
"src/**/*.html",
"src/**/*.css",
"src/**/*.tex",
]) + [
"Cargo.toml", # prevents a warning about num_enum
"//:buildinfo.txt",
"templates/.empty", # required for askama
]
_anki_features = [
"translations",
]
_anki_rustc_env = {
"BUILDINFO": "$(location //:buildinfo.txt)",
}
rust_library(
name = "anki",
srcs = glob([
"src/**/*.rs",
]),
compile_data = _anki_compile_data,
crate_features = _anki_features,
proc_macro_deps = [
"//rslib/cargo:async_trait",
"//rslib/cargo:serde_derive",
"//rslib/cargo:serde_repr",
],
rustc_env = _anki_rustc_env,
visibility = ["//visibility:public"],
deps = [
":build_script",
"//rslib/cargo:ammonia",
"//rslib/cargo:askama",
"//rslib/cargo:async_compression",
"//rslib/cargo:blake3",
"//rslib/cargo:bytes",
"//rslib/cargo:chrono",
"//rslib/cargo:coarsetime",
"//rslib/cargo:flate2",
"//rslib/cargo:fluent",
"//rslib/cargo:fnv",
"//rslib/cargo:futures",
"//rslib/cargo:hex",
"//rslib/cargo:htmlescape",
"//rslib/cargo:intl_memoizer",
"//rslib/cargo:itertools",
"//rslib/cargo:lazy_static",
"//rslib/cargo:nom",
"//rslib/cargo:num_enum",
"//rslib/cargo:num_integer",
"//rslib/cargo:once_cell",
"//rslib/cargo:pin_project",
"//rslib/cargo:prost",
"//rslib/cargo:pulldown_cmark",
"//rslib/cargo:rand",
"//rslib/cargo:regex",
"//rslib/cargo:rusqlite",
"//rslib/cargo:scopeguard",
"//rslib/cargo:serde",
"//rslib/cargo:serde_aux",
"//rslib/cargo:serde_json",
"//rslib/cargo:serde_tuple",
"//rslib/cargo:sha1",
"//rslib/cargo:slog",
"//rslib/cargo:slog_async",
"//rslib/cargo:slog_envlogger",
"//rslib/cargo:slog_term",
"//rslib/cargo:strum",
"//rslib/cargo:tempfile",
"//rslib/cargo:tokio",
"//rslib/cargo:tokio_util",
"//rslib/cargo:unic_langid",
"//rslib/cargo:unicase",
"//rslib/cargo:unicode_normalization",
"//rslib/cargo:utime",
"//rslib/cargo:zip",
"//rslib/i18n:anki_i18n",
] + select({
# rustls on Linux
"//platforms:linux_x86_64": ["@reqwest_rustls//:reqwest"],
"//platforms:linux_arm64": ["@reqwest_rustls//:reqwest"],
# native tls on other platforms
"//conditions:default": ["//rslib/cargo:reqwest"],
}),
)
# Tests
#######################
rust_test(
name = "anki_tests",
compile_data = _anki_compile_data,
crate = ":anki",
crate_features = _anki_features,
data = glob([
"tests/support/**",
]),
rustc_env = _anki_rustc_env,
deps = [
"//rslib/cargo:env_logger",
"//rslib/i18n:anki_i18n",
],
)
rustfmt_test(
name = "format_check",
srcs = glob([
"src/**/*.rs",
]),
)
rustfmt_fix(
name = "format",
srcs = glob([
"src/**/*.rs",
]),
)
sql_format(
name = "sql_format",
srcs = glob(["**/*.sql"]),
)
proto_format(
name = "proto_format",
srcs = ["backend.proto"],
)
# backend.proto
#######################
proto_library(
name = "backend_proto_lib",
srcs = ["backend.proto"],
visibility = ["//visibility:public"],
)
exports_files(["backend.proto"])