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:
strawberry 2024-03-09 15:49:51 -05:00 committed by June
parent 04e5d2c20a
commit 3f06725261
3 changed files with 412 additions and 149 deletions

View file

@ -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"