Files
cproof-context/build/local.md
jabber.developer2 22977846a3 docs: split context into layered, agent-oriented files
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.
2026-04-30 20:52:06 +03:00

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) or clang.
  • 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.debian pins the OS and package set used by CI. Mirror it locally instead of fighting the host.