Replace the single file-structure.md with a stratified layout designed
for AI/agent skill consumption: tables and concrete identifiers over
prose, files loaded on demand, content separated by churn rate.
Layers:
- architecture/ stable structural reference (overview, source-map,
test-map, data-flow)
- patterns/ memory, commands, autocomplete, events, xmpp,
encryption, ui, plugins
- testing/ unit-tests, stubs, functional-tests, bench
- build/ local, docker, ci
- playbooks/ add-command, add-test, add-autocomplete,
add-event-handler, add-encryption
- gotchas.md append-only dated entries (seven seed entries)
- wip/ branch-specific notes; deleted on merge to master
Stable layers describe cproof on master only. In-flight feature
branches (currently feat/ai) get a single file under wip/.
INDEX.md is the entry map with churn labels; SKILL.md is the
always-loaded skill hint pointing to it.
2.1 KiB
2.1 KiB
Local build
Reference for autogen.sh / configure / make flags. Do not run these
on the host as a default workflow — see build/docker.md. This file
documents what the canonical Docker build does internally.
Toolchain
- autotools:
autoconf,automake,libtool,autoconf-archive. - C compiler:
gcc(CI) orclang. - GLib 2, ncursesw, OpenSSL, libstrophe, libreadline.
- Optional: libcmocka (tests), libsignal-protocol-c (OMEMO), libotr5 (OTR), gpgme (PGP), libcurl (HTTP), libmicrohttpd (HTTP server features), libnotify, libgcrypt, Python (plugins).
The full Debian package list is in Dockerfile.debian — treat that as the
authoritative dependency list.
Sequence
./autogen.sh # generate configure from configure.ac
./configure [opts]
make -jN
autogen.sh runs aclocal, autoheader, automake, autoconf, libtoolize.
Useful ./configure flags
| Flag | Effect |
|---|---|
--enable-debug |
Debug build (the configure-debug script wraps this). |
--disable-omemo / --disable-otr / --disable-pgp |
Drop encryption stack. |
--disable-python-plugins |
C-only plugins. |
--disable-notifications |
No libnotify. |
--prefix=<path> |
Install prefix. |
./configure --help prints the full set; flag names track upstream Profanity
closely.
configure-debug
Convenience script at repo root. Roughly:
./autogen.sh
./configure --enable-debug --prefix=$(pwd)/install
Tweak in-script if you want different debug knobs.
make targets
| Target | What |
|---|---|
make |
Builds the profanity binary (and cproof symlink, if rename has progressed to it). |
make check |
Builds and runs the unit-test suite. |
make clean |
Wipes object files. |
make distclean |
Wipes generated configure artefacts too. |
Why this is host-unfriendly
- Library version drift between the host (a workstation) and the canonical Debian build means the host build can succeed while CI fails (or vice versa) — bugs that don't reproduce in either env are very expensive.
Dockerfile.debianpins the OS and package set used by CI. Mirror it locally instead of fighting the host.