mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-11 07:36:53 +00:00
9996d567d9
* fix(build): support non-Linux Unix targets (illumos/Solaris/*BSD) Two independent build-infrastructure blockers kept RustFS from building on non-Linux Unix platforms. Neither touches runtime logic. 1. pulsar regenerates its protobuf bindings in build.rs on every build, which needs `protoc`. Platforms without a packaged protoc (illumos/Solaris/*BSD) now enable pulsar's `protobuf-src` feature via a cfg-gated dependency, which builds a vendored protoc from C++ sources. Mainstream targets keep the lean dependency and their existing system/CI protoc. 2. clocksource 0.8.3 (pulled in transitively by ratelimit 0.10) used the Linux-only `CLOCK_MONOTONIC_COARSE`. ratelimit 2.0 dropped the clocksource dependency entirely, so upgrading removes the portability problem at the root rather than patching clocksource. The bandwidth throttle's bulk `consume()` is rewritten onto ratelimit 2.0's `try_wait_n`, preserving the best-effort partial-consumption semantics. Verified: cargo check + bandwidth monitor unit tests pass; cargo tree confirms protobuf-src is enabled only for illumos/Solaris/*BSD and clocksource is gone from the graph. The final illumos build must be confirmed on-platform. Closes #3195 * fix(ecstore): guard ratelimit v2 capacity overflow Co-Authored-By: heihutu <heihutu@gmail.com> * test(ecstore): avoid slow bandwidth reader timeout Co-Authored-By: heihutu <heihutu@gmail.com> * fix(targets): drop vendored pulsar protobuf build Co-Authored-By: heihutu <heihutu@gmail.com> --------- Co-authored-by: houseme <housemecn@gmail.com> Co-authored-by: heihutu <heihutu@gmail.com>
109 lines
4.4 KiB
TOML
109 lines
4.4 KiB
TOML
[package]
|
|
name = "rustfs-targets"
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
rust-version.workspace = true
|
|
version.workspace = true
|
|
homepage.workspace = true
|
|
description = "Notification target abstraction and implementations for RustFS"
|
|
keywords = ["file-system", "notification", "target", "rustfs", "Minio"]
|
|
categories = ["web-programming", "development-tools", "filesystem"]
|
|
documentation = "https://docs.rs/rustfs-targets/latest/rustfs_targets/"
|
|
|
|
[features]
|
|
default = []
|
|
hotpath = [
|
|
"hotpath/hotpath",
|
|
"hotpath/tokio",
|
|
"hotpath/futures",
|
|
"hotpath/parking_lot",
|
|
"hotpath/reqwest-0-13",
|
|
"rustfs-config/hotpath",
|
|
"rustfs-extension-schema/hotpath",
|
|
"rustfs-s3-types/hotpath",
|
|
"rustfs-tls-runtime/hotpath",
|
|
"rustfs-utils/hotpath",
|
|
]
|
|
hotpath-alloc = [
|
|
"hotpath",
|
|
"hotpath/hotpath-alloc",
|
|
"rustfs-config/hotpath-alloc",
|
|
"rustfs-extension-schema/hotpath-alloc",
|
|
"rustfs-s3-types/hotpath-alloc",
|
|
"rustfs-tls-runtime/hotpath-alloc",
|
|
"rustfs-utils/hotpath-alloc",
|
|
]
|
|
hotpath-cpu = [
|
|
"hotpath",
|
|
"hotpath/hotpath-cpu",
|
|
"rustfs-config/hotpath-cpu",
|
|
"rustfs-extension-schema/hotpath-cpu",
|
|
"rustfs-s3-types/hotpath-cpu",
|
|
"rustfs-tls-runtime/hotpath-cpu",
|
|
"rustfs-utils/hotpath-cpu",
|
|
]
|
|
|
|
[dependencies]
|
|
hotpath.workspace = true
|
|
rustfs-config = { workspace = true, features = ["notify", "audit", "server-config-model"] }
|
|
rustfs-extension-schema = { workspace = true }
|
|
rustfs-tls-runtime = { workspace = true }
|
|
rustfs-s3-types = { workspace = true }
|
|
rustfs-utils = { workspace = true, features = ["egress"] }
|
|
async-trait = { workspace = true }
|
|
futures-util = { workspace = true }
|
|
async-nats = { workspace = true, features = ["server_2_10", "server_2_11", "server_2_12", "server_2_14", "service", "aws-lc-rs", "nkeys", "object-store", "kv", "websockets", "nuid"] }
|
|
deadpool-postgres = { workspace = true }
|
|
hyper = { workspace = true, features = ["http2", "http1", "server"] }
|
|
hyper-rustls = { workspace = true, default-features = false, features = ["native-tokio", "tls12", "logging", "aws-lc-rs"] }
|
|
lapin = { workspace = true, default-features = false, features = ["tokio", "rustls", "rustls--aws_lc_rs"] }
|
|
libc = { workspace = true }
|
|
# pulsar regenerates its protobuf bindings from `PulsarApi.proto` in build.rs on every
|
|
# build, which needs `protoc`. Keep this dependency lean and install a system
|
|
# protobuf compiler on platforms where it is not provided by the base image.
|
|
# See https://github.com/rustfs/rustfs/issues/3195.
|
|
pulsar = { workspace = true, default-features = false, features = ["tokio-rustls-runtime", "telemetry"] }
|
|
regex = { workspace = true }
|
|
rayon = { workspace = true }
|
|
reqwest = { workspace = true }
|
|
rumqttc = { workspace = true, features = ["websocket"] }
|
|
redis = { workspace = true, features = ["connection-manager", "tokio-rustls-comp", "tls-rustls-insecure"] }
|
|
rustls = { workspace = true, default-features = false, features = ["aws-lc-rs", "logging", "tls12", "prefer-post-quantum", "std"] }
|
|
rustls-native-certs = { workspace = true }
|
|
s3s = { workspace = true, features = ["minio"] }
|
|
serde = { workspace = true, features = ["derive"] }
|
|
serde_json = { workspace = true, features = ["raw_value"] }
|
|
sha2 = { workspace = true }
|
|
snap = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
tokio = { workspace = true, features = ["fs", "rt-multi-thread", "sync", "time"] }
|
|
tokio-util = { workspace = true }
|
|
tokio-postgres = { workspace = true, default-features = false, features = ["runtime", "with-serde_json-1"] }
|
|
tokio-postgres-rustls = { workspace = true }
|
|
tracing = { workspace = true }
|
|
url = { workspace = true }
|
|
urlencoding = { workspace = true }
|
|
uuid = { workspace = true, features = ["v4", "v7", "serde", "fast-rng", "macro-diagnostics"] }
|
|
sysinfo = { workspace = true, features = ["multithread"] }
|
|
rustfs-kafka-async = { workspace = true }
|
|
mysql_async = { workspace = true, default-features = false, features = ["default-rustls", "tracing"] }
|
|
jiff = { workspace = true }
|
|
parking_lot = { workspace = true }
|
|
hashbrown = { workspace = true, features = ["serde", "rayon"] }
|
|
arc-swap = { workspace = true }
|
|
metrics = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
criterion = { workspace = true, features = ["html_reports"] }
|
|
tempfile = { workspace = true }
|
|
rcgen = { workspace = true }
|
|
tracing-subscriber = { workspace = true, features = ["env-filter", "time"] }
|
|
|
|
[[bench]]
|
|
name = "queue_store_benchmark"
|
|
harness = false
|
|
|
|
[lints]
|
|
workspace = true
|