reformat and improve cargo.toml significantly
makes it a LOT more readable, and found some ways to reduce unnecessary crates being built. Signed-off-by: strawberry <strawberry@puppygock.gay>
This commit is contained in:
parent
04e5d2c20a
commit
3f06725261
3 changed files with 412 additions and 149 deletions
345
Cargo.toml
345
Cargo.toml
|
@ -12,103 +12,47 @@ edition = "2021"
|
|||
# See also `rust-toolchain.toml`
|
||||
rust-version = "1.75.0"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
# Web framework
|
||||
axum = { version = "0.6.20", default-features = false, features = ["form", "headers", "http1", "http2", "json", "matched-path"], optional = true }
|
||||
axum-server = { version = "0.5.1", features = ["tls-rustls"] }
|
||||
tower = { version = "0.4.13", features = ["util"] }
|
||||
tower-http = { version = "0.4.4", features = ["add-extension", "cors", "sensitive-headers", "trace", "util", "compression-zstd"] }
|
||||
|
||||
# Used for matrix spec type definitions and helpers
|
||||
#ruma = { version = "0.4.0", features = ["compat", "rand", "appservice-api-c", "client-api", "federation-api", "push-gateway-api-c", "state-res", "unstable-pre-spec", "unstable-exhaustive-types"] }
|
||||
#ruma = { git = "https://github.com/ruma/ruma", rev = "4d9f754657a099df8e61533787b8eebd12946435", features = ["compat", "rand", "appservice-api-c", "client-api", "federation-api", "push-gateway-api-c", "state-res", "unstable-msc2448", "unstable-msc3575", "unstable-exhaustive-types", "ring-compat", "unstable-unspecified", "unstable-msc2870", "unstable-msc3061", "unstable-msc2867", "unstable-extensible-events"] }
|
||||
ruma = { git = "https://github.com/girlbossceo/ruma", rev = "13b8386812679b33235c68fa1ec0b50c4647d05a", features = ["compat", "rand", "appservice-api-c", "client-api", "federation-api", "push-gateway-api-c", "state-res", "unstable-msc2448", "unstable-msc3575", "unstable-exhaustive-types", "ring-compat", "unstable-unspecified", "unstable-msc2870", "unstable-msc3061", "unstable-msc2867", "unstable-extensible-events"] }
|
||||
#ruma = { path = "../ruma/crates/ruma", features = ["compat", "rand", "appservice-api-c", "client-api", "federation-api", "push-gateway-api-c", "state-res", "unstable-msc2448", "unstable-msc3575", "unstable-exhaustive-types", "ring-compat", "unstable-unspecified" ] }
|
||||
|
||||
# Async runtime and utilities
|
||||
hyperlocal = { git = "https://github.com/softprops/hyperlocal", rev = "2ee4d149644600d326559af0d2b235c945b05c04", features = [
|
||||
"server",
|
||||
] }
|
||||
hyper = { version = "0.14", features = ["server", "http1", "http2"] }
|
||||
tokio = { version = "1.36.0", features = ["fs", "macros", "signal", "sync"] }
|
||||
|
||||
# Used for the http request / response body type for Ruma endpoints used with reqwest
|
||||
bytes = "1.5.0"
|
||||
http = "0.2.12"
|
||||
# Used for ruma wrapper
|
||||
serde_json = { version = "1.0.114", features = ["raw_value"] }
|
||||
# Used for appservice registration files
|
||||
serde_yaml = "0.9.32"
|
||||
# Used for pdu definition
|
||||
serde = { version = "1.0.197", features = ["rc"] }
|
||||
# Used for secure identifiers
|
||||
rand = "0.8.5"
|
||||
# Used to hash passwords
|
||||
argon2 = { version = "0.5.3", features = ["alloc", "rand"], default-features = false }
|
||||
reqwest = { version = "0.11.25", default-features = false, features = ["rustls-tls-native-roots", "socks"] }
|
||||
|
||||
# Used for conduit::Error type
|
||||
thiserror = "1.0.57"
|
||||
# Used to generate thumbnails for images
|
||||
image = { version = "0.24.9", default-features = false, features = ["jpeg", "png", "gif", "webp"] }
|
||||
|
||||
# Used to encode server public key
|
||||
base64 = "0.22.0"
|
||||
|
||||
# Used when hashing the state
|
||||
ring = "0.17.8"
|
||||
|
||||
# Used when querying the SRV record of other servers
|
||||
trust-dns-resolver = "0.23.2"
|
||||
|
||||
# Used to find matching events for appservices
|
||||
regex = "1.10.3"
|
||||
|
||||
# Used to load forbidden room/user regex from config
|
||||
serde_regex = "1.1.0"
|
||||
itertools = "0.12.1"
|
||||
|
||||
# jwt jsonwebtokens
|
||||
jsonwebtoken = "9.2.0"
|
||||
# Performance measurements
|
||||
tracing = { version = "0.1.40", features = [] }
|
||||
tracing-subscriber = { version = "0.3.18", features = ["env-filter"] }
|
||||
tracing-flame = "0.2.0"
|
||||
opentelemetry = "0.21.0"
|
||||
opentelemetry_sdk = { version = "0.21.2", features = ["rt-tokio"] }
|
||||
opentelemetry-jaeger = { version = "0.20.0", features = ["rt-tokio"] }
|
||||
tracing-opentelemetry = "0.22.0"
|
||||
|
||||
lru-cache = "0.1.2"
|
||||
rusqlite = { git = "https://github.com/rusqlite/rusqlite", rev = "def8e9460d8376a5c0c9f4f9846d413a9cd4581a", optional = true, features = ["bundled"] }
|
||||
parking_lot = { version = "0.12.1", optional = true }
|
||||
num_cpus = "1.16.0"
|
||||
|
||||
# Used for ruma wrapper
|
||||
serde_html_form = "0.2.4"
|
||||
|
||||
thread_local = "1.1.8"
|
||||
# used for TURN server authentication
|
||||
hmac = "0.12.1"
|
||||
sha-1 = "0.10.1"
|
||||
sha2 = { version = "0.10.8" }
|
||||
# used for conduit's CLI and admin room command parsing
|
||||
clap = { version = "4.5.2", default-features = false, features = ["std", "derive", "help", "usage", "error-context"] }
|
||||
futures-util = { version = "0.3.30", default-features = false }
|
||||
# Used for reading the configuration from conduit.toml & environment variables
|
||||
figment = { version = "0.10.14", features = ["env", "toml"] }
|
||||
|
||||
tikv-jemalloc-ctl = { version = "0.5.4", features = ["use_std"], optional = true }
|
||||
tikv-jemallocator = { version = "0.5.4", features = ["unprefixed_malloc_on_supported_platforms"], optional = true }
|
||||
async-trait = "0.1.77"
|
||||
|
||||
# used for checking if an IP is in specific subnets / CIDR ranges
|
||||
# used for checking if an IP is in specific subnets / CIDR ranges easier
|
||||
ipaddress = "0.1.3"
|
||||
|
||||
sd-notify = { version = "0.4.1", optional = true }
|
||||
|
||||
webpage = { version = "2.0", default-features = false }
|
||||
|
||||
rocksdb = { version = "0.22.0", default-features = true, features = ["multi-threaded-cf", "zstd"], optional = true }
|
||||
|
||||
either = { version = "1.10.0", features = ["serde"] }
|
||||
|
||||
# to listen on both HTTP and HTTPS
|
||||
axum-server-dual-protocol = { version = "0.5.2", optional = true }
|
||||
|
||||
# to encode/decode percent URIs when conduwuit is running without a reverse proxy
|
||||
#urlencoding = "2.1.3"
|
||||
|
||||
|
@ -118,25 +62,275 @@ axum-server-dual-protocol = { version = "0.5.2", optional = true }
|
|||
# to parse user-friendly time durations in admin commands
|
||||
cyborgtime = "2.1.1"
|
||||
|
||||
# all the web/HTTP dependencies
|
||||
# Used for the http request / response body type for Ruma endpoints used with reqwest
|
||||
bytes = "1.5.0"
|
||||
http = "0.2.12"
|
||||
|
||||
# Web framework
|
||||
[dependencies.axum]
|
||||
version = "0.6.20"
|
||||
default-features = false
|
||||
features = ["form", "headers", "http1", "http2", "json", "matched-path"]
|
||||
optional = true
|
||||
|
||||
[dependencies.axum-server]
|
||||
version = "0.5.1"
|
||||
features = ["tls-rustls"]
|
||||
|
||||
[dependencies.tower]
|
||||
version = "0.4.13"
|
||||
features = ["util"]
|
||||
|
||||
[dependencies.tower-http]
|
||||
version = "0.4.4"
|
||||
features = [
|
||||
"add-extension",
|
||||
"cors",
|
||||
"sensitive-headers",
|
||||
"trace",
|
||||
"util",
|
||||
]
|
||||
|
||||
# unix socket support
|
||||
[dependencies.hyperlocal]
|
||||
git = "https://github.com/softprops/hyperlocal"
|
||||
rev = "2ee4d149644600d326559af0d2b235c945b05c04"
|
||||
features = ["server"]
|
||||
|
||||
[dependencies.hyper]
|
||||
version = "0.14"
|
||||
features = [
|
||||
"server",
|
||||
"http1",
|
||||
"http2",
|
||||
]
|
||||
|
||||
[dependencies.reqwest]
|
||||
version = "0.11.25"
|
||||
default-features = false
|
||||
features = [
|
||||
"rustls-tls-native-roots",
|
||||
"socks",
|
||||
]
|
||||
|
||||
# all the serde stuff
|
||||
# Used for pdu definition
|
||||
[dependencies.serde]
|
||||
version = "1.0.197"
|
||||
features = ["rc"]
|
||||
# Used for appservice registration files
|
||||
[dependencies.serde_yaml]
|
||||
version = "0.9.32"
|
||||
# Used for ruma wrapper
|
||||
[dependencies.serde_json]
|
||||
version = "1.0.114"
|
||||
features = ["raw_value"]
|
||||
|
||||
|
||||
# Used for password hashing
|
||||
[dependencies.argon2]
|
||||
version = "0.5.3"
|
||||
features = [
|
||||
"alloc",
|
||||
"rand",
|
||||
]
|
||||
default-features = false
|
||||
|
||||
# Used to generate thumbnails for images
|
||||
[dependencies.image]
|
||||
version = "0.24.9"
|
||||
default-features = false
|
||||
features = [
|
||||
"jpeg",
|
||||
"png",
|
||||
"gif",
|
||||
"webp",
|
||||
]
|
||||
|
||||
# logging
|
||||
[dependencies.tracing]
|
||||
version = "0.1.40"
|
||||
default-features = false
|
||||
[dependencies.tracing-subscriber]
|
||||
version = "0.3.18"
|
||||
features = ["env-filter"]
|
||||
|
||||
# optional SHA256 media keys feature
|
||||
[dependencies.sha2]
|
||||
version = "0.10.8"
|
||||
optional = true
|
||||
|
||||
# optional opentelemetry, performance measurements, flamegraphs, etc for performance measurements and monitoring
|
||||
[dependencies.opentelemetry]
|
||||
version = "0.21.0"
|
||||
optional = true
|
||||
[dependencies.tracing-flame]
|
||||
version = "0.2.0"
|
||||
optional = true
|
||||
[dependencies.tracing-opentelemetry]
|
||||
version = "0.20.0"
|
||||
optional = true
|
||||
[dependencies.opentelemetry_sdk]
|
||||
version = "0.21.2"
|
||||
optional = true
|
||||
features = ["rt-tokio"]
|
||||
[dependencies.opentelemetry-jaeger]
|
||||
version = "0.20.0"
|
||||
optional = true
|
||||
features = ["rt-tokio"]
|
||||
|
||||
# optional jemalloc usage
|
||||
[dependencies.tikv-jemallocator]
|
||||
version = "0.5.4"
|
||||
optional = true
|
||||
default-features = false
|
||||
features = ["unprefixed_malloc_on_supported_platforms"]
|
||||
[dependencies.tikv-jemalloc-ctl]
|
||||
version = "0.5.4"
|
||||
optional = true
|
||||
default-features = false
|
||||
features = ["use_std"]
|
||||
|
||||
# for URL previews
|
||||
[dependencies.webpage]
|
||||
version = "2.0"
|
||||
default-features = false
|
||||
|
||||
# to support multiple variations of setting a config option
|
||||
[dependencies.either]
|
||||
version = "1.10.0"
|
||||
features = ["serde"]
|
||||
|
||||
# to listen on both HTTP and HTTPS if listening on TLS dierctly from conduwuit for complement or sytest
|
||||
[dependencies.axum-server-dual-protocol]
|
||||
version = "0.5.2"
|
||||
optional = true
|
||||
|
||||
# used for conduit's CLI and admin room command parsing
|
||||
[dependencies.clap]
|
||||
version = "4.5.2"
|
||||
default-features = false
|
||||
features = [
|
||||
"std",
|
||||
"derive",
|
||||
"help",
|
||||
"usage",
|
||||
"error-context",
|
||||
]
|
||||
|
||||
[dependencies.futures-util]
|
||||
version = "0.3.30"
|
||||
default-features = false
|
||||
|
||||
# Used for reading the configuration from conduit.toml & environment variables
|
||||
[dependencies.figment]
|
||||
version = "0.10.14"
|
||||
features = [
|
||||
"env",
|
||||
"toml",
|
||||
]
|
||||
|
||||
# Used for matrix spec type definitions and helpers
|
||||
#ruma = { version = "0.4.0", features = ["compat", "rand", "appservice-api-c", "client-api", "federation-api", "push-gateway-api-c", "state-res", "unstable-pre-spec", "unstable-exhaustive-types"] }
|
||||
#ruma = { git = "https://github.com/ruma/ruma", rev = "4d9f754657a099df8e61533787b8eebd12946435", features = ["compat", "rand", "appservice-api-c", "client-api", "federation-api", "push-gateway-api-c", "state-res", "unstable-msc2448", "unstable-msc3575", "unstable-exhaustive-types", "ring-compat", "unstable-unspecified", "unstable-msc2870", "unstable-msc3061", "unstable-msc2867", "unstable-extensible-events"] }
|
||||
#ruma = { path = "../ruma/crates/ruma", features = ["compat", "rand", "appservice-api-c", "client-api", "federation-api", "push-gateway-api-c", "state-res", "unstable-msc2448", "unstable-msc3575", "unstable-exhaustive-types", "ring-compat", "unstable-unspecified" ] }
|
||||
[dependencies.ruma]
|
||||
git = "https://github.com/girlbossceo/ruma"
|
||||
branch = "conduwuit-changes"
|
||||
features = [
|
||||
"compat",
|
||||
"rand",
|
||||
"appservice-api-c",
|
||||
"client-api",
|
||||
"federation-api",
|
||||
"push-gateway-api-c",
|
||||
"state-res",
|
||||
"unstable-msc2448",
|
||||
"unstable-msc3575",
|
||||
"unstable-exhaustive-types",
|
||||
"ring-compat",
|
||||
"unstable-unspecified",
|
||||
"unstable-msc2870",
|
||||
"unstable-msc3061",
|
||||
"unstable-msc2867",
|
||||
"unstable-extensible-events",
|
||||
]
|
||||
|
||||
[dependencies.rust-rocksdb]
|
||||
git = "https://github.com/zaidoon1/rust-rocksdb"
|
||||
#branch = "master"
|
||||
rev = "3e4a0f632a8c0c2839c7d183725c53895110d907"
|
||||
optional = true
|
||||
features = [
|
||||
"multi-threaded-cf",
|
||||
"zstd",
|
||||
]
|
||||
|
||||
[dependencies.rusqlite]
|
||||
git = "https://github.com/rusqlite/rusqlite"
|
||||
#branch = "master"
|
||||
rev = "def8e9460d8376a5c0c9f4f9846d413a9cd4581a"
|
||||
optional = true
|
||||
features = ["bundled"]
|
||||
|
||||
# used only by rusqlite
|
||||
[dependencies.parking_lot]
|
||||
version = "0.12.1"
|
||||
optional = true
|
||||
|
||||
# used only by rusqlite
|
||||
[dependencies.thread_local]
|
||||
version = "1.1.8"
|
||||
optional = true
|
||||
|
||||
# used only by rusqlite and rust-rocksdb
|
||||
[dependencies.num_cpus]
|
||||
version = "1.16.0"
|
||||
optional = true
|
||||
|
||||
|
||||
[target.'cfg(not(unix))'.dependencies]
|
||||
tokio = { version = "1.36.0", features = ["fs",
|
||||
"macros",
|
||||
"sync",
|
||||
] } # tokio signals are not used on non-*nix platforms
|
||||
|
||||
# *nix-specific dependencies
|
||||
[target.'cfg(unix)'.dependencies]
|
||||
nix = { version = "0.28.0", features = ["resource"] }
|
||||
sd-notify = { version = "0.4.1", optional = true } # systemd is only available/relevant on *nix platforms
|
||||
tokio = { version = "1.36.0", features = [
|
||||
"fs",
|
||||
"macros",
|
||||
"sync",
|
||||
"signal",
|
||||
] }
|
||||
|
||||
|
||||
|
||||
[features]
|
||||
default = ["conduit_bin", "backend_rocksdb", "systemd", "zstd_compression"]
|
||||
default = ["conduit_bin", "backend_rocksdb", "systemd"]
|
||||
backend_sqlite = ["sqlite"]
|
||||
backend_rocksdb = ["rocksdb"]
|
||||
backend_rocksdb = ["rust-rocksdb", "num_cpus"]
|
||||
jemalloc = ["tikv-jemalloc-ctl", "tikv-jemallocator"]
|
||||
sqlite = ["rusqlite", "parking_lot", "tokio/signal"]
|
||||
sqlite = ["rusqlite", "parking_lot", "thread_local", "num_cpus"]
|
||||
conduit_bin = ["axum"]
|
||||
systemd = ["sd-notify"]
|
||||
|
||||
#gzip_compression = ["tower-http/compression-gzip"]
|
||||
zstd_compression = []
|
||||
zstd_compression = ["tower-http/compression-zstd"]
|
||||
#brotli_compression = ["tower-http/compression-br"]
|
||||
#compression = ["tower-http/compression-full"]
|
||||
sha256_media = []
|
||||
io_uring = ["rocksdb/io-uring"]
|
||||
#all_compression = ["tower-http/compression-full"] # all compression algos
|
||||
|
||||
sha256_media = ["sha2"]
|
||||
io_uring = ["rust-rocksdb/io-uring"]
|
||||
axum_dual_protocol = ["axum-server-dual-protocol"]
|
||||
|
||||
perf_measurements = ["opentelemetry", "tracing-flame", "tracing-opentelemetry", "opentelemetry_sdk", "opentelemetry-jaeger"]
|
||||
|
||||
|
||||
|
||||
[[bin]]
|
||||
name = "conduit"
|
||||
path = "src/main.rs"
|
||||
|
@ -167,6 +361,8 @@ conf-files = [
|
|||
maintainer-scripts = "debian/"
|
||||
systemd-units = { unit-name = "matrix-conduit" }
|
||||
|
||||
|
||||
|
||||
[profile.dev]
|
||||
debug = 0
|
||||
lto = 'off'
|
||||
|
@ -203,6 +399,8 @@ debug = 0
|
|||
opt-level = 3
|
||||
codegen-units = 1
|
||||
|
||||
|
||||
|
||||
[lints]
|
||||
workspace = true
|
||||
|
||||
|
@ -230,7 +428,6 @@ unit_bindings = "warn"
|
|||
# this seems to suggest broken code and is not working correctly
|
||||
unused_braces = "allow"
|
||||
|
||||
|
||||
[workspace.lints.clippy]
|
||||
# pedantic = "warn"
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue