do not edit — generated by btf.
mpindexguidereference

using mp

the command tour. every mp <command> accepts --force, --no-deps, --unmask, --config=<file>, and (where it makes sense) --sysroot=<name>, in any order alongside its own arguments.

finding things:


mp search fig                 # every port whose category/name matches
mp info figlet                # metadata, deps, and current status
mp list                       # every port in every configured repo

installing:


mp install --dry-run figlet   # resolve the graph, install nothing
mp install figlet             # the real thing

a %tag dependency resolves to whichever provider has the lowest pkg_pref, automatically backtracking to the next one if the first would conflict with something already installed. TARGET_<tag>=<port> in mp.conf pins a tag to a specific port outright, bypassing that pick entirely.

after installing:


mp files figlet                # every file this package owns
mp why figlet                  # what installed package (if any) depends on it
mp tree figlet                 # its own dependency tree
mp revdep figlet                # who links against it, before you remove it

holding and masking, both persisted (written to WD/pkgconf.conf, mp's own overlay, never hand-edited):


mp hold figlet                 # block install/remove/reinstall/update
mp unhold figlet
mp mask figlet                  # hide from auto-pick, block an explicit install
mp unmask figlet                 # (--unmask on a single command overrides a mask
                                  #  for just that one invocation, without lifting it)

use flags, same persistence:


mp use figlet                   # list what figlet declares and its current state
mp use figlet +someflag         # enable one, persisted
mp use figlet -someflag         # disable it again

cleaning up:


mp prune --dry-run              # what's installed but no longer needed by anything requested
mp prune                        # the real thing
mp remove figlet                 # remove one package by name

prune only ever considers a package installed as someone else's dependency, never something you explicitly requested -- re-requesting an already-installed dependency (mp install figlet, say, when it's already on disk as another package's dep) promotes it so prune leaves it alone from then on.

keeping the tree and your installs current:


mp sync                         # pull every configured repo, nothing else
mp update                       # sync, then rebuild every requested package, in dependency order

update rebuilds serially, on purpose: a reinstall learns what files it owns by snapshotting the install prefix before and after its own build, and two concurrent builds would corrupt each other's snapshots. the install db itself is still safe to touch from multiple invocations at once (flock-guarded), just not two builds of the SAME package.

sanity checks:


mp verify                       # every port in the tree parses and has no dependency cycle
mp dryrun --force all           # resolve everything as if reinstalling from scratch

dryrun only proves the dependency graph itself resolves cleanly (deps, conflicts, hold, mask, keywords) -- it stops before staging, so it can't catch an actual file-path conflict with something already installed, or a phase script failing for real. read it as "would this resolve," not "would this fully succeed."

package sets, a plain text file, no dedicated command needed to create one:


mp export myset                 # snapshot every requested package into WD/sets/myset.set
mp install @myset                # install every name in it, elsewhere or later
powered by btf.