Files
firezone/rust/Cargo.toml
Thomas Eizinger be250f1e00 refactor(connlib): repurpose connlib-shared as connlib-model (#6919)
The `connlib-shared` crate has become a bit of a dependency magnet
without a clear purpose. It hosts utilities like `get_user_agent`,
messages for the client and gateway to communicate with the portal and
domain types like `ResourceId`.

To create a better dependency structure in our workspace, we repurpose
`connlib-shared` as a `connlib-model` crate. Its purpose is to host
domain-specific model types that multiple crates may want to use. For
that purpose, we rename the `callbacks::ResourceDescription` type to
`ResourceView`, designating that this is a _view_ onto a resource as
seen by `connlib`. The message types which currently double up as
connlib-internal model thus become an implementation detail of
`firezone-tunnel` and shouldn't be used for anything else.

---------

Signed-off-by: Reactor Scram <ReactorScram@users.noreply.github.com>
Co-authored-by: Reactor Scram <ReactorScram@users.noreply.github.com>
2024-10-03 14:47:58 +00:00

113 lines
3.9 KiB
TOML

[workspace]
members = [
"bin-shared",
"connlib/clients/android",
"connlib/clients/apple",
"connlib/clients/shared",
"connlib/model",
"connlib/snownet",
"connlib/tunnel",
"gateway",
"gui-client/src-common",
"gui-client/src-tauri",
"headless-client",
"iced-client",
"ip-packet",
"logging",
"phoenix-channel",
"relay",
"socket-factory",
"telemetry",
"tests/gui-smoke-test",
"tests/http-test-server",
"tun",
]
resolver = "2"
[workspace.dependencies]
atomicwrites = "0.4.4"
boringtun = { version = "0.6", default-features = false }
chrono = { version = "0.4", default-features = false, features = ["std", "clock", "oldtime", "serde"] }
swift-bridge = "0.1.57"
backoff = { version = "0.4", features = ["tokio"] }
tracing = { version = "0.1.40" }
tracing-macros = { git = "https://github.com/tokio-rs/tracing", branch = "v0.1.x" } # Contains `dbg!` but for `tracing`.
tracing-subscriber = { version = "0.3.17", features = ["parking_lot"] }
secrecy = "0.8"
str0m = { version = "0.6.2", default-features = false }
futures-bounded = "0.2.1"
domain = { version = "0.10", features = ["serde"] }
dns-lookup = "2.0"
tokio-tungstenite = "0.23.1"
rtnetlink = { version = "0.14.1", default-features = false, features = ["tokio_socket"] }
tokio = "1.39"
rustls = { version = "0.23.10", default-features = false, features = ["ring"] }
connlib-client-android = { path = "connlib/clients/android" }
connlib-client-apple = { path = "connlib/clients/apple" }
connlib-client-shared = { path = "connlib/clients/shared" }
firezone-bin-shared = { path = "bin-shared" }
firezone-logging = { path = "logging" }
firezone-telemetry = { path = "telemetry" }
snownet = { path = "connlib/snownet" }
firezone-relay = { path = "relay" }
connlib-model = { path = "connlib/model" }
firezone-tunnel = { path = "connlib/tunnel" }
phoenix-channel = { path = "phoenix-channel" }
ip-packet = { path = "ip-packet" }
socket-factory = { path = "socket-factory" }
tun = { path = "tun" }
socket2 = { version = "0.5" }
[workspace.lints.clippy]
dbg_macro = "warn"
print_stdout = "warn"
print_stderr = "warn"
unnecessary_wraps = "warn"
unused_async = "warn"
wildcard_enum_match_arm = "warn" # Ensures we match on all combinations of `Poll`, preventing erroneous suspensions.
redundant_else = "warn"
redundant_clone = "warn"
[workspace.lints.rustdoc]
private-intra-doc-links = "allow" # We don't publish any of our docs but want to catch dead links.
[patch.crates-io]
boringtun = { git = "https://github.com/cloudflare/boringtun", branch = "master" }
str0m = { git = "https://github.com/algesten/str0m", branch = "main" }
ip_network = { git = "https://github.com/JakubOnderka/ip_network", branch = "master" } # Waiting for release.
ip_network_table = { git = "https://github.com/edmonds/ip_network_table", branch = "some-useful-traits" } # For `Debug` and `Clone`
proptest = { git = "https://github.com/proptest-rs/proptest", branch = "master" }
proptest-state-machine = { git = "https://github.com/proptest-rs/proptest", branch = "master" }
tracing-stackdriver = { git = "https://github.com/thomaseizinger/tracing-stackdriver", branch = "deps/bump-otel-0.23" } # Waiting for release.
# Enforce `tracing-macros` to have released `tracing` version.
[patch.'https://github.com/tokio-rs/tracing']
tracing = "0.1"
[profile.release]
strip = true
# Full link-time optimization. Reduces binaries by up to 3x on some platforms.
lto = "fat"
# Increases the compiler's ability to produce smaller, optimized code
# at the expense of compilation time
codegen-units = 1
[profile.bench]
strip = false # Frame pointers are necessary for profiling; `strip=true` appears to remove them.
# Override build settings just for the GUI client, so we get a pdb/dwp
# Cargo ignores profile settings if they're not in the workspace's Cargo.toml
[profile.dev.package.firezone-gui-client]
debug = "full"
split-debuginfo = "packed"
strip = "none"
[profile.release.package.firezone-gui-client]
debug = "full"
split-debuginfo = "packed"
strip = "none"