mirror of
https://github.com/kanidm/kanidm.git
synced 2025-02-23 12:37:00 +01:00
While basking under the shade of the coolabah tree, I was overcome by an intense desire to improve the performance and memory usage of Kanidm. This pr reduces a major source of repeated small clones, lowers default log level in testing, removes some trace fields that are both large and probably shouldn't be traced, and also changes some lto settings for release builds.
309 lines
8.3 KiB
TOML
309 lines
8.3 KiB
TOML
[workspace.package]
|
|
version = "1.3.0-dev"
|
|
authors = [
|
|
"William Brown <william@blackhats.net.au>",
|
|
"James Hodgkinson <james@terminaloutcomes.com>",
|
|
]
|
|
rust-version = "1.77"
|
|
edition = "2021"
|
|
license = "MPL-2.0"
|
|
homepage = "https://github.com/kanidm/kanidm/"
|
|
repository = "https://github.com/kanidm/kanidm/"
|
|
|
|
[workspace]
|
|
resolver = "2"
|
|
members = [
|
|
"proto",
|
|
"tools/cli",
|
|
"tools/iam_migrations/freeipa",
|
|
"tools/iam_migrations/ldap",
|
|
"tools/orca",
|
|
"unix_integration",
|
|
"unix_integration/nss_kanidm",
|
|
"unix_integration/pam_kanidm",
|
|
"server/web_ui/admin",
|
|
"server/web_ui/login_flows",
|
|
"server/web_ui/user",
|
|
"server/web_ui/shared",
|
|
"server/daemon",
|
|
"server/lib",
|
|
"server/lib-macros",
|
|
"server/core",
|
|
"server/testkit",
|
|
"server/testkit-macros",
|
|
"libs/client",
|
|
"libs/crypto",
|
|
"libs/file_permissions",
|
|
"libs/profiles",
|
|
"libs/sketching",
|
|
"libs/users",
|
|
]
|
|
|
|
# Below follows some guides/estimates to system resources consumed during a build.
|
|
# Most of these values are over-estimates and are just rough observations.
|
|
#
|
|
# These were tested on a 10core M1 Max.
|
|
# Parallel Linking Maximum = an estimate of how much ram will be consumed at peak
|
|
# while the build is linking multiple binaries in parallel
|
|
# Single Largest Binary Maximum = an estamite of how much ram is conusmed by the
|
|
# single largest binary during linking. This would reflect a single threaded
|
|
# build ram maximum.
|
|
# Time = estimate on how long the build may take.
|
|
|
|
# cargo build --release
|
|
#
|
|
# Parallel Linking Maximum: 6GB
|
|
# Single Largest Binary Maximum: 5GB
|
|
# Time: ~6 minutes
|
|
[profile.release]
|
|
debug = true
|
|
strip = "none"
|
|
lto = "thin"
|
|
opt-level = 3
|
|
codegen-units = 32
|
|
|
|
[profile.release.build-override]
|
|
debug = false
|
|
opt-level = 0
|
|
codegen-units = 256
|
|
|
|
# cargo build --profile release-lto
|
|
#
|
|
# Parallel Linking Maximum: 24GB
|
|
# Single Largest Binary Maximum: 16GB
|
|
# Time: ~11 minutes
|
|
[profile.release-lto]
|
|
inherits = "release"
|
|
lto = "fat"
|
|
codegen-units = 1
|
|
|
|
# cargo build
|
|
#
|
|
# Parallel Linking Maximum: 4GB
|
|
# Single Largest Binary Maximum: 3GB
|
|
# Time: ~2 minutes
|
|
#
|
|
# cargo test [-- --test-threads=1]
|
|
#
|
|
# Parallel Maximum: 1GB
|
|
# Single Maximum: 0.2GB
|
|
[profile.dev]
|
|
debug = true
|
|
lto = false
|
|
opt-level = 0
|
|
codegen-units = 256
|
|
|
|
[profile.dev.build-override]
|
|
debug = true
|
|
opt-level = 0
|
|
codegen-units = 256
|
|
|
|
[patch.crates-io]
|
|
## As Kanidm maintains a number of libraries, sometimes during development we need to override them
|
|
## with local or git versions. This patch table allows quick uncommenting to achieve that.
|
|
|
|
# compact_jwt = { path = "../compact_jwt" }
|
|
# concread = { path = "../concread" }
|
|
|
|
# idlset = { path = "../idlset" }
|
|
|
|
# ldap3_client = { path = "../ldap3/client" }
|
|
# ldap3_proto = { path = "../ldap3/proto" }
|
|
# ldap3_client = { git = "https://github.com/kanidm/ldap3.git" }
|
|
# ldap3_proto = { git = "https://github.com/kanidm/ldap3.git" }
|
|
|
|
# scim_proto = { path = "../scim/proto" }
|
|
# scim_proto = { git = "https://github.com/kanidm/scim.git" }
|
|
|
|
# base64urlsafedata = { path = "../webauthn-rs/base64urlsafedata" }
|
|
# webauthn-authenticator-rs = { path = "../webauthn-rs/webauthn-authenticator-rs" }
|
|
# webauthn-rs = { path = "../webauthn-rs/webauthn-rs" }
|
|
# webauthn-rs-core = { path = "../webauthn-rs/webauthn-rs-core" }
|
|
# webauthn-rs-proto = { path = "../webauthn-rs/webauthn-rs-proto" }
|
|
# sshkey-attest = { path = "../webauthn-rs/sshkey-attest" }
|
|
|
|
# kanidm-hsm-crypto = { path = "../hsm-crypto" }
|
|
|
|
[workspace.dependencies]
|
|
kanidmd_core = { path = "./server/core", version = "=1.3.0-dev" }
|
|
kanidmd_lib = { path = "./server/lib", version = "=1.3.0-dev" }
|
|
kanidmd_lib_macros = { path = "./server/lib-macros", version = "=1.3.0-dev" }
|
|
kanidmd_testkit = { path = "./server/testkit", version = "=1.3.0-dev" }
|
|
kanidm_build_profiles = { path = "./libs/profiles", version = "=1.3.0-dev" }
|
|
kanidm_client = { path = "./libs/client", version = "=1.3.0-dev" }
|
|
kanidm-hsm-crypto = "^0.2.0"
|
|
kanidm_lib_crypto = { path = "./libs/crypto", version = "=1.3.0-dev" }
|
|
kanidm_lib_file_permissions = { path = "./libs/file_permissions", version = "=1.3.0-dev" }
|
|
kanidm_proto = { path = "./proto", version = "=1.3.0-dev" }
|
|
kanidm_unix_int = { path = "./unix_integration", version = "=1.3.0-dev" }
|
|
kanidm_utils_users = { path = "./libs/users", version = "=1.3.0-dev" }
|
|
sketching = { path = "./libs/sketching", version = "=1.3.0-dev" }
|
|
|
|
serde_with = "3.7.0"
|
|
argon2 = { version = "0.5.3", features = ["alloc"] }
|
|
async-recursion = "1.1.0"
|
|
async-trait = "^0.1.78"
|
|
axum = { version = "0.7.5", features = [
|
|
"form",
|
|
"json",
|
|
"macros",
|
|
"multipart",
|
|
"original-uri",
|
|
"query",
|
|
"tokio",
|
|
"tracing",
|
|
] }
|
|
base32 = "^0.4.0"
|
|
base64 = "^0.22.1"
|
|
base64urlsafedata = "0.5.0"
|
|
bitflags = "^2.4.2"
|
|
bytes = "^1.5.0"
|
|
clap = { version = "^4.5.7", features = ["derive", "env"] }
|
|
clap_complete = "^4.5.5"
|
|
# Forced by saffron/cron
|
|
chrono = "^0.4.35"
|
|
compact_jwt = { version = "^0.4.1", default-features = false }
|
|
concread = "^0.5.1"
|
|
cron = "0.12.1"
|
|
crossbeam = "0.8.4"
|
|
criterion = "^0.5.1"
|
|
csv = "1.3.0"
|
|
dialoguer = "0.10.4"
|
|
dhat = "0.3.3"
|
|
dyn-clone = "^1.0.17"
|
|
fernet = "^0.2.1"
|
|
filetime = "^0.2.23"
|
|
fs2 = "^0.4.3"
|
|
futures = "^0.3.30"
|
|
futures-concurrency = "^3.1.0"
|
|
futures-util = { version = "^0.3.30", features = ["sink"] }
|
|
gix = { version = "0.53.1", default-features = false }
|
|
gloo = "^0.8.1"
|
|
gloo-utils = "0.2.0"
|
|
hashbrown = { version = "0.14.3", features = ["serde", "inline-more", "ahash"] }
|
|
hex = "^0.4.3"
|
|
http = "1.1.0"
|
|
hyper = { version = "1.3.1", features = ["server", "client"] }
|
|
hyper-util = { version = "0.1.5", features = ["server", "tokio"] }
|
|
hyper-tls = "0.6.0"
|
|
idlset = "^0.2.5"
|
|
image = { version = "0.24.9", default-features = false, features = [
|
|
"gif",
|
|
"jpeg",
|
|
"webp",
|
|
] }
|
|
itertools = "0.12.1"
|
|
enum-iterator = "1.5.0"
|
|
js-sys = "^0.3.69"
|
|
kanidmd_web_ui_shared = { path = "./server/web_ui/shared" }
|
|
# REMOVE this
|
|
lazy_static = "^1.4.0"
|
|
ldap3_client = "^0.5"
|
|
ldap3_proto = { version = "^0.5", features = ["serde"] }
|
|
|
|
libc = "^0.2.153"
|
|
libnss = "^0.4.0"
|
|
libsqlite3-sys = "^0.25.2"
|
|
lodepng = "3.10.1"
|
|
lru = "^0.12.3"
|
|
mathru = "^0.13.0"
|
|
mimalloc = "0.1.42"
|
|
notify-debouncer-full = { version = "0.1" }
|
|
num_enum = "^0.5.11"
|
|
oauth2_ext = { version = "^4.4.2", package = "oauth2", default-features = false }
|
|
openssl-sys = "^0.9"
|
|
openssl = "^0.10.64"
|
|
|
|
opentelemetry = { version = "0.20.0" }
|
|
opentelemetry_api = { version = "0.20.0", features = ["logs", "metrics"] }
|
|
opentelemetry-otlp = { version = "0.13.0", default-features = false, features = [
|
|
"serde",
|
|
"logs",
|
|
"metrics",
|
|
"http-proto",
|
|
"grpc-tonic",
|
|
] }
|
|
opentelemetry_sdk = "0.20.0"
|
|
tracing-opentelemetry = "0.21.0"
|
|
|
|
paste = "^1.0.14"
|
|
pkg-config = "^0.3.30"
|
|
prctl = "1.0.0"
|
|
proc-macro2 = "1.0.85"
|
|
qrcode = "^0.12.0"
|
|
quote = "1"
|
|
rand = "^0.8.5"
|
|
rand_chacha = "0.3.1"
|
|
regex = "1.10.5"
|
|
reqwest = { version = "0.12.4", default-features = false, features = [
|
|
"cookies",
|
|
"json",
|
|
"gzip",
|
|
"native-tls",
|
|
"native-tls-alpn",
|
|
] }
|
|
rpassword = "^7.3.1"
|
|
rusqlite = { version = "^0.28.0", features = ["array", "bundled"] }
|
|
|
|
scim_proto = "^0.2.2"
|
|
sd-notify = "^0.4.1"
|
|
selinux = "^0.4.3"
|
|
serde = "^1.0.197"
|
|
serde_cbor = { version = "0.12.0-dev", package = "serde_cbor_2" }
|
|
serde_json = "^1.0.114"
|
|
serde-wasm-bindgen = "0.5"
|
|
sha2 = "0.10.8"
|
|
shellexpand = "^2.1.2"
|
|
smartstring = "^1.0.1"
|
|
smolset = "^1.3.1"
|
|
sshkey-attest = "^0.5.0"
|
|
svg = "0.13.1"
|
|
syn = { version = "2.0.53", features = ["full"] }
|
|
tempfile = "3.10.1"
|
|
testkit-macros = { path = "./server/testkit-macros" }
|
|
time = { version = "^0.3.34", features = ["formatting", "local-offset"] }
|
|
|
|
tokio = "^1.38.0"
|
|
tokio-openssl = "^0.6.4"
|
|
tokio-util = "^0.7.10"
|
|
|
|
toml = "^0.5.11"
|
|
tracing = { version = "^0.1.40", features = [
|
|
"max_level_trace",
|
|
"release_max_level_debug",
|
|
] }
|
|
# tracing = { version = "^0.1.37" }
|
|
tracing-subscriber = { version = "^0.3.18", features = ["env-filter"] }
|
|
tracing-forest = "^0.1.6"
|
|
|
|
url = "^2.5.1"
|
|
urlencoding = "2.1.3"
|
|
utoipa = "4.2.0"
|
|
utoipa-swagger-ui = "6.0.0"
|
|
uuid = "^1.8.0"
|
|
|
|
wasm-bindgen = "^0.2.92"
|
|
wasm-bindgen-futures = "^0.4.42"
|
|
wasm-bindgen-test = "0.3.42"
|
|
|
|
webauthn-authenticator-rs = { version = "0.5.0", features = [
|
|
"softpasskey",
|
|
"softtoken",
|
|
"mozilla",
|
|
] }
|
|
webauthn-rs = { version = "0.5.0", features = ["preview-features"] }
|
|
webauthn-rs-core = "0.5.0"
|
|
webauthn-rs-proto = "0.5.0"
|
|
|
|
web-sys = "^0.3.69"
|
|
whoami = "^1.5.1"
|
|
walkdir = "2"
|
|
|
|
x509-cert = "0.2.5"
|
|
|
|
yew = "^0.20.0"
|
|
yew-router = "^0.17.0"
|
|
zxcvbn = "^2.2.2"
|
|
|
|
nonempty = "0.8.1"
|