Files
clawstor/claw-store/Cargo.toml
T
osobh 3b40a94115
Build with clawstor cache / Cargo build (clawstor-cached) (push) Failing after 3s
Phase 9 S1-S3: TTL-scoped sessions with tag leases (#105)
2026-07-15 07:52:28 +00:00

112 lines
4.6 KiB
TOML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[package]
name = "claw-store"
version = "0.3.0"
edition = "2021"
[lib]
name = "claw_store"
path = "src/lib.rs"
[[bin]]
name = "claw-store"
path = "src/main.rs"
# Phase 5b: fingerprint-keyed cargo build cache CLI. Wraps `cargo build`
# with a peer-cache lookup: hit → download+restore, miss → build+capture+upload.
# Uses the same identity/config surface as claw-store daemon.
[[bin]]
name = "claw-cargo"
path = "src/claw_cargo.rs"
# Phase 6 (2026-07-14): read-only FUSE mount that exposes the blob
# store as a filesystem. Gated behind the `fuse` cargo feature +
# Linux-only in dep resolution so my macOS dev box doesn't need
# macFUSE headers installed to build the other bins.
#
# Build with: cargo build --features fuse --bin claw-fuse
[[bin]]
name = "claw-fuse"
path = "src/claw_fuse.rs"
required-features = ["fuse"]
[features]
default = []
# Phase 6: enables the claw-fuse binary + pulls in the fuser dep.
fuse = ["dep:fuser"]
[target.'cfg(any(target_os = "linux", target_os = "macos"))'.dependencies]
# v0.15 — Rust FUSE bindings. Pulled on Linux + macOS when the
# `fuse` feature is on. macOS additionally requires macFUSE
# (https://osxfuse.github.io) — install via `brew install --cask
# macfuse` before building with --features fuse.
fuser = { version = "0.15", optional = true }
[dependencies]
clap = { version = "4", features = ["derive", "env"] }
serde = { version = "1", features = ["derive"] }
toml = "0.8"
tokio = { version = "1", features = ["full"] }
sysinfo = "0.30"
anyhow = "1"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
chrono = { version = "0.4", features = ["serde"] }
axum = { version = "0.7", features = ["macros"] }
tower-http = { version = "0.5", features = ["cors", "fs"] }
tokio-stream = "0.1"
serde_json = "1"
# v1 — session IDs (Phase 9 S1). v4 random hex; no persistence
# concerns beyond "opaque URL-safe id".
uuid = { version = "1", features = ["v4"] }
# v0.2.0 — flock(2) wrapper for atomic+locked manifest writes
# (manifest.rs). Already a transitive dep; declaring it directly
# makes the call site obvious.
libc = "0.2"
# v0.2.0 — sibling-tempfile + rename for atomic manifest persistence.
# Was previously dev-dep only; promoted to main.
tempfile = "3"
# v0.11.1 — cluster membership via scuttlebutt gossip + phi-accrual failure
# detection. Wraps in cluster/gossip.rs. UDP transport, keyed KV state per
# node, seed_nodes bootstrap from [[cluster.peers]] config.
chitchat = "0.11"
# v0.11 — QUIC transport for peer RPC (Phase 1c). UDP-based; runs on a
# separate port from chitchat gossip. TLS 1.3 by default; we wire mTLS
# against a fleet root CA in cluster/transport.rs.
quinn = { version = "0.11", default-features = false, features = ["runtime-tokio", "rustls-ring"] }
# v0.23 — TLS 1.3 provider driving quinn's crypto. Pinned to the ring
# provider so a single CryptoProvider is installed process-wide.
rustls = { version = "0.23", default-features = false, features = ["ring"] }
# v0.13 — X.509 cert generation for the fleet CA + per-node leaf certs.
# Used both by production bootstrap (writes PEM to /etc/claw-store/tls/)
# and by tests (in-memory ephemeral CA).
rcgen = { version = "0.13", features = ["pem", "x509-parser"] }
# v2 — parse PEM files into DER for rustls consumption. Used in
# NodeIdentity::from_pem_files (Phase 1d) so persistent identity round-trips
# through the file system on daemon restart.
rustls-pemfile = "2"
# v1 — content-addressed hashing for the Phase 2 blob store. BLAKE3 is
# used both for whole-blob addressing (BlobId) and for per-chunk
# addressing (dedup). Fast enough that a full-blob rehash on read
# verification stays cheap.
blake3 = "1"
# v0.4 — tar archive writer/reader for the Phase 5 build-artifact
# capture flow (cargo target/deps → tar → BlobPutStream). Preserves
# file metadata (mtimes, perms) which cargo relies on for its own
# incremental-rebuild fingerprint checks.
tar = "0.4"
# v0.13 — zstd wrapping around the tar stream. Level 3 is the default;
# gets 5-10× compression on cargo .rlib without noticeable CPU cost.
zstd = "0.13"
# v0.12 — HTTP client for the Phase 7f Gitea live-refs adapter.
# `rustls-tls` reuses the same rustls stack already pulled in by
# quinn — no additional TLS impls in the binary. `json` unlocks
# serde parsing of the /branches + /tags responses without a
# hand-rolled decoder. `default-features=false` drops native-tls
# and the openssl dep chain we don't need.
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "json"] }
[dev-dependencies]
tempfile = "3"
tower = { version = "0.5", features = ["util"] }
http-body-util = "0.1"