do not edit — generated by btf.

mp docs

mp is a source-based package manager. a perl frontend resolves dependencies, applies config, and drives a small c89 backend (mpx) that does the actual filesystem work: staging a port's fetch/patch/build/install phases, snapshotting the install prefix, running phase scripts under an optional linux sandbox.

the split is deliberate. anything that needs real judgment (dependency resolution, slot/use composition, config layering, hooks) is perl, easy to read and change. anything that touches the filesystem in a way that has to be fast and hard to get subtly wrong (copying trees, snapshotting a prefix, parsing mpx.conf) is small, boring c. neither half tries to do the other's job.

a port is one directory, category/name (networking/curl, say), holding a single pkg.conf: pkg_name, pkg_ver, pkg_deps, and a handful of phase bodies (fetch, patch, build, check, install, remove), each just shell. no separate add.sh/del.sh convention, no makefile dialect to learn.

two doc sections, split by audience:

guide - installing mp, day-to-day commands, writing your own port. start here if you just want to use mp.

reference - how mp itself is built, the config system in depth, writing an extension, the multi-repo mechanism. start here if you're changing mp itself, or want the full picture behind a command you already use.

mp.conf.example, patches.conf.example, hooks.conf.example, and mpx.conf.example (repo root, alongside this docs/ directory) are the exhaustive, copyable key-by-key config reference: mp.conf.example -> /etc/mp.conf, mpx.conf.example -> /etc/mpx.conf, patches.conf.example and hooks.conf.example as inline comments in their own respective files. reference/config.btft is the narrative tour of the same system; the *.example files stay the actual, authoritative, directly-usable templates.

powered by btf.