mirror of
https://gitlab.com/famedly/conduit.git
synced 2024-12-26 12:33:47 +03:00
0b7ed5adc9
This uses a separate step and docker image, which I'm not a huge fan of. At least I could get this to work for now, but I won't be shocked when it breaks later. I know, I know, fixing this kind of problem is the exact reason I bothered to do this, but I was really struggling to do better here. Maybe I can take a second pass at this later. Also, this explicitly names the caches, because without this, various things related to linking will break.
170 lines
7.2 KiB
TOML
170 lines
7.2 KiB
TOML
[package]
|
|
name = "conduit"
|
|
description = "A Matrix homeserver written in Rust"
|
|
license = "Apache-2.0"
|
|
authors = ["timokoesters <timo@koesters.xyz>"]
|
|
homepage = "https://conduit.rs"
|
|
repository = "https://gitlab.com/famedly/conduit"
|
|
readme = "README.md"
|
|
version = "0.7.0-alpha"
|
|
edition = "2021"
|
|
|
|
# When changing this, make sure to update the hash near the text "THE
|
|
# rust-version HASH" in `flake.nix`. If you don't have Nix installed or
|
|
# otherwise don't know how to do this, ping `@charles:computer.surgery` or
|
|
# `@dusk:gaze.systems` in the matrix room.
|
|
#
|
|
# Also make sure to update the docker image tags in `.gitlab-ci.yml`.
|
|
rust-version = "1.70.0"
|
|
|
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
|
|
[dependencies]
|
|
# Web framework
|
|
axum = { version = "0.6.18", 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.1", features = ["add-extension", "cors", "sensitive-headers", "trace", "util"] }
|
|
|
|
# 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 = "b4853aa8fa5e3a24e3689fc88044de9915f6ab67", 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" ] }
|
|
#ruma = { git = "https://github.com/timokoesters/ruma", rev = "4ec9c69bb7e09391add2382b3ebac97b6e8f4c64", 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" ] }
|
|
#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
|
|
tokio = { version = "1.28.1", features = ["fs", "macros", "signal", "sync"] }
|
|
# Used for storing data permanently
|
|
#sled = { version = "0.34.7", features = ["compression", "no_metrics"], optional = true }
|
|
#sled = { git = "https://github.com/spacejam/sled.git", rev = "e4640e0773595229f398438886f19bca6f7326a2", features = ["compression"] }
|
|
persy = { version = "1.4.4", optional = true, features = ["background_ops"] }
|
|
|
|
# Used for the http request / response body type for Ruma endpoints used with reqwest
|
|
bytes = "1.4.0"
|
|
http = "0.2.9"
|
|
# Used to find data directory for default db path
|
|
directories = "4.0.1"
|
|
# Used for ruma wrapper
|
|
serde_json = { version = "1.0.96", features = ["raw_value"] }
|
|
# Used for appservice registration files
|
|
serde_yaml = "0.9.21"
|
|
# Used for pdu definition
|
|
serde = { version = "1.0.163", features = ["rc"] }
|
|
# Used for secure identifiers
|
|
rand = "0.8.5"
|
|
# Used to hash passwords
|
|
rust-argon2 = "1.0.0"
|
|
# Used to send requests
|
|
reqwest = { default-features = false, features = ["rustls-tls-native-roots", "socks"], git = "https://github.com/timokoesters/reqwest", rev = "57b7cf4feb921573dfafad7d34b9ac6e44ead0bd" }
|
|
# Used for conduit::Error type
|
|
thiserror = "1.0.40"
|
|
# Used to generate thumbnails for images
|
|
image = { version = "0.24.6", default-features = false, features = ["jpeg", "png", "gif"] }
|
|
# Used to encode server public key
|
|
base64 = "0.21.2"
|
|
# Used when hashing the state
|
|
ring = "0.16.20"
|
|
# Used when querying the SRV record of other servers
|
|
trust-dns-resolver = "0.22.0"
|
|
# Used to find matching events for appservices
|
|
regex = "1.8.1"
|
|
# jwt jsonwebtokens
|
|
jsonwebtoken = "8.3.0"
|
|
# Performance measurements
|
|
tracing = { version = "0.1.37", features = [] }
|
|
tracing-subscriber = { version = "0.3.17", features = ["env-filter"] }
|
|
tracing-flame = "0.2.0"
|
|
opentelemetry = { version = "0.18.0", features = ["rt-tokio"] }
|
|
opentelemetry-jaeger = { version = "0.17.0", features = ["rt-tokio"] }
|
|
tracing-opentelemetry = "0.18.0"
|
|
lru-cache = "0.1.2"
|
|
rusqlite = { version = "0.29.0", optional = true, features = ["bundled"] }
|
|
parking_lot = { version = "0.12.1", optional = true }
|
|
# crossbeam = { version = "0.8.2", optional = true }
|
|
num_cpus = "1.15.0"
|
|
threadpool = "1.8.1"
|
|
# heed = { git = "https://github.com/timokoesters/heed.git", rev = "f6f825da7fb2c758867e05ad973ef800a6fe1d5d", optional = true }
|
|
# Used for ruma wrapper
|
|
serde_html_form = "0.2.0"
|
|
|
|
rocksdb = { version = "0.21.0", default-features = true, features = ["multi-threaded-cf", "zstd"], optional = true }
|
|
|
|
thread_local = "1.1.7"
|
|
# used for TURN server authentication
|
|
hmac = "0.12.1"
|
|
sha-1 = "0.10.1"
|
|
# used for conduit's CLI and admin room command parsing
|
|
clap = { version = "4.3.0", default-features = false, features = ["std", "derive", "help", "usage", "error-context"] }
|
|
futures-util = { version = "0.3.28", default-features = false }
|
|
# Used for reading the configuration from conduit.toml & environment variables
|
|
figment = { version = "0.10.8", features = ["env", "toml"] }
|
|
|
|
tikv-jemalloc-ctl = { version = "0.5.0", features = ["use_std"], optional = true }
|
|
tikv-jemallocator = { version = "0.5.0", features = ["unprefixed_malloc_on_supported_platforms"], optional = true }
|
|
lazy_static = "1.4.0"
|
|
async-trait = "0.1.68"
|
|
|
|
sd-notify = { version = "0.4.1", optional = true }
|
|
|
|
[target.'cfg(unix)'.dependencies]
|
|
nix = { version = "0.26.2", features = ["resource"] }
|
|
|
|
[features]
|
|
default = ["conduit_bin", "backend_sqlite", "backend_rocksdb", "systemd"]
|
|
#backend_sled = ["sled"]
|
|
backend_persy = ["persy", "parking_lot"]
|
|
backend_sqlite = ["sqlite"]
|
|
#backend_heed = ["heed", "crossbeam"]
|
|
backend_rocksdb = ["rocksdb"]
|
|
jemalloc = ["tikv-jemalloc-ctl", "tikv-jemallocator"]
|
|
sqlite = ["rusqlite", "parking_lot", "tokio/signal"]
|
|
conduit_bin = ["axum"]
|
|
systemd = ["sd-notify"]
|
|
|
|
[[bin]]
|
|
name = "conduit"
|
|
path = "src/main.rs"
|
|
required-features = ["conduit_bin"]
|
|
|
|
[lib]
|
|
name = "conduit"
|
|
path = "src/lib.rs"
|
|
|
|
[package.metadata.deb]
|
|
name = "matrix-conduit"
|
|
maintainer = "Paul van Tilburg <paul@luon.net>"
|
|
copyright = "2020, Timo Kösters <timo@koesters.xyz>"
|
|
license-file = ["LICENSE", "3"]
|
|
depends = "$auto, ca-certificates"
|
|
extended-description = """\
|
|
A fast Matrix homeserver that is optimized for smaller, personal servers, \
|
|
instead of a server that has high scalability."""
|
|
section = "net"
|
|
priority = "optional"
|
|
assets = [
|
|
["debian/README.md", "usr/share/doc/matrix-conduit/README.Debian", "644"],
|
|
["README.md", "usr/share/doc/matrix-conduit/", "644"],
|
|
["target/release/conduit", "usr/sbin/matrix-conduit", "755"],
|
|
]
|
|
conf-files = [
|
|
"/etc/matrix-conduit/conduit.toml"
|
|
]
|
|
maintainer-scripts = "debian/"
|
|
systemd-units = { unit-name = "matrix-conduit" }
|
|
|
|
[profile.dev]
|
|
lto = 'off'
|
|
incremental = true
|
|
|
|
[profile.release]
|
|
lto = 'thin'
|
|
incremental = true
|
|
codegen-units=32
|
|
# If you want to make flamegraphs, enable debug info:
|
|
# debug = true
|
|
|
|
# For releases also try to max optimizations for dependencies:
|
|
[profile.release.build-override]
|
|
opt-level = 3
|
|
[profile.release.package."*"]
|
|
opt-level = 3
|