# Building ubuntu-fido from source ## System dependencies ```bash sudo apt-get update sudo apt-get install -y \ build-essential pkg-config \ libpam0g-dev libgtk-4-dev libadwaita-1-dev libfido2-dev \ debhelper devscripts lintian ``` Rust toolchain: stable (1.78 minimum). Install via [rustup](https://rustup.rs). ## Build steps ```bash # Pure-Rust crates (daemon, CLI, common) cargo build --release # GUI (requires libgtk-4-dev + libadwaita-1-dev) cargo build -p ubuntu-fido-gui --release # PAM module (requires libpam0g-dev) make -C pam # Full deb build (requires all of the above) debuild -us -uc -b # Output: ../ubuntu-fido*.deb ``` ## Tests ```bash cargo test --workspace --exclude ubuntu-fido-gui ``` The GUI crate has no automated tests in v1; manual smoke tests are documented in [docs/plans/2026-04-26-ubuntu-fido-design.md](plans/2026-04-26-ubuntu-fido-design.md#testing-strategy). ## Phase 0 status Repository scaffolding is complete (tag `v0.1.0-scaffolding`). Subsequent phases per [docs/plans/2026-04-26-ubuntu-fido-implementation.md](plans/2026-04-26-ubuntu-fido-implementation.md). Build verifications NOT yet run on this machine (require `sudo apt install libpam0g-dev libgtk-4-dev libadwaita-1-dev libfido2-dev`): - `make -C pam` — PAM module compile - `cargo build -p ubuntu-fido-gui --release` — GUI link - `debuild -us -uc -b` — full deb build Once those packages are installed, run the three commands above to complete the Phase 0 acceptance gate.