meta_package_manager.sudo module¶
Privilege-escalation machinery for the mutating fan-outs.
This module owns sudo credential priming (prime_sudo()) and its
background keepalive (_start_sudo_keepalive()), escalation-policy
resolution (_resolved_sudo()), sudo-failure detection
(_is_sudo_auth_failure()), and the hidden-prompt stall watchdog
(_StallWatchdog). The execution engine
(meta_package_manager.execution) consumes the policy pieces to wrap and
diagnose escalated commands; the CLI calls prime_sudo() at the top of
each mutating subcommand.
Why priming exists: a concurrent state-changing command mutes per-manager output
and feeds each child stdin=/dev/null, so a sudo password prompt raised
mid-run (by mpmās own sudo --non-interactive or by a manager that escalates
internally, like
Homebrew cask) lands invisibly on /dev/tty and can stall the run up to the
mutating timeout. Priming first probes the credential cache non-interactively:
found warm, it is silently kept alive for the whole run; found cold on a terminal,
the managers mpm itself escalates get a single up-front password prompt, naming
them and branded [mpm]. Internal escalators never prompt up front: their rare
cold-cache escalation is covered by the silent-call stall notice instead, raised
while the hidden prompt can still be answered.
Note
Everything in this module is UNIX-only: a Windows run returns early at
prime_sudo()ās guard and never arms the watchdog (the internal
escalators are macOS-only managers today).
- meta_package_manager.sudo.prime_sudo(ctx, managers)[source]¶
Warm the
sudocredential cache, up front, for a mutating fan-out.Probes the cache non-interactively (
sudo --non-interactive --validate) before considering any prompt. A warm cache (pre-authenticatedsudo --validate, aNOPASSWDrule, a recent run) is silently kept fresh for the whole invocation by_start_sudo_keepalive(), so every later escalation on the same terminal, mpmās ownsudo --non-interactiveas well as a managerās internalsudo(CLIExecutor.internal_sudo), spends the cache instead of blocking on an invisible prompt inside the concurrent fan-out. Only a cold cache, on an interactive terminal, with managers that mpm itself escalates (_resolved_sudo()), triggers the interactive path: a notice naming the managers and the subcommand, then a single brandedsudopassword prompt.Call at the top of each mutating subcommand, before the fan-out draws its spinner. Never prompts when:
Windows (no
sudo) or the process is already root,no selected manager escalates, through mpm or internally,
a dry run or a plan run (no state-changing CLI is executed),
already primed once this invocation (idempotent),
the
sudoexecutable is missing (one warning is logged),the probe finds the cache already warm (keepalive only, fully silent),
no interactive terminal is available: one warning names the managers mpm escalates and leaves them to fail fast rather than block on a prompt no one can answer, while an internal-only selection stays silent, or
only internal escalators are selected on a cold cache: most such runs never escalate, so the rare mid-run prompt is covered by the silent-call stall notice instead.
- Return type: