Repository navigation
uv-manager 0.4.0
Fixed
Trampolines now honor UVM_PLATFORM (#5).
A site can set UVM_PLATFORM to split its state tree more finely than uname -m does — glibc skew
between login and compute images, musl, x86-64 microarchitecture levels. The wrapper honored that
override; the trampolines it generates did not, because their /bin/sh body hardcoded
a=$(uname -m). The two disagreed on every invocation: uv tool install ruff wrote the executable
under the override key, the trampoline on PATH looked under uname -m, and every tool a user
installed exited 127 naming an architecture the operator never configured — for a binary one
directory away.
The generated body now resolves ${UVM_PLATFORM:-$(uname -m)}, the same expression uvm_init uses,
evaluated on the executing node from the invoker's environment. The trampoline directory stays
architecture-neutral, so one PATH entry set on a login node is still correct on a compute node of
another type.
Who is affected. Only sites that set UVM_PLATFORM. Under the default uname -m the two
expressions always agreed, so nothing changes for you.
Upgrading. Trampolines generated by an earlier version carry the old body until they are
rewritten. Any uv tool or uv python command resyncs them; uv-manager trampolines does it
explicitly.
Pre-existing since the trampoline mechanism was introduced.
Documentation
- Every comment and user-facing document audited for prose drift.
- The
is not installed for architecturetroubleshooting entry now says the quoted name is the
platform key, which a site may have overridden. etc/uv-manager.conf.examplewarns thatUVM_PLATFORMmust be computed on the executing node: a
login-node value inherited as a literal throughsbatch --export=ALLsends the wrapper and every
trampoline into another node's tree.- Reworded the
uvm_candidatesexplanation (#4) and corrected a README example snippet.
Internal
Twenty-one [harness] commits to .agents/, the spec-driven factory this repository is developed
with. Nothing a site deploys.
Deploying
Sites that clone a tag into /apps/external/uv/<version> need to clone 0.4.0 and repoint the
modulefile; nothing picks this up on its own. Sites tracking main already have it. Deploy with
git clone or rsync -a, so the bin/{uv,uvx,uvm} symlinks that make the four entry points one
script survive the copy.
The Lmod modulefile derives its prefix from myModuleVersion() and needs no edit.