Repository navigation
uv-manager 0.3.0
First tagged release. Versions 0.1.0 and 0.2.0 existed in the script but were never tagged, so this
tag also establishes the convention: a bare X.Y.Z matching the string uv-manager --version prints.
Breaking
The wrapper's six configuration variables are renamed from UV_MANAGER_* to UVM_* (#2).
| was | now |
|---|---|
UV_MANAGER_ROOT |
UVM_ROOT |
UV_MANAGER_PIN |
UVM_PIN |
UV_MANAGER_PLATFORM |
UVM_PLATFORM |
UV_MANAGER_INSTALL_URL |
UVM_INSTALL_URL |
UV_MANAGER_LOCK_TIMEOUT |
UVM_LOCK_TIMEOUT |
UV_MANAGER_LOCK_STALE |
UVM_LOCK_STALE |
Same meanings, same defaults, same precedence. UV_MANAGER_* sat inside uv's own namespace, where a
site operator could not tell an Astral variable from one this wrapper invented — and uv already
ships a UV_LOCK_TIMEOUT of its own, so the collision was not hypothetical.
There is no compatibility shim. A legacy name is now simply unset. If you have UV_MANAGER_ROOT
in a modulefile, a job script, or a Globus Compute endpoint configuration, rename it. The failure mode
if you do not is loud rather than silent: the wrapper exits non-zero with cannot determine where to keep per-user uv state and lists every candidate it tried.
The five variables the wrapper exports for uv — UV_CACHE_DIR, UV_TOOL_DIR, UV_TOOL_BIN_DIR,
UV_PYTHON_INSTALL_DIR, UV_PYTHON_BIN_DIR — and the PATH prepends are unchanged. Those are uv's
namespace by right. The split now makes the project's central boundary visible in the names:
storage is ours, resolution is uv's.
Upgrading from 0.2.0
- Rename the six variables wherever your site sets them. The modulefile is the usual place; see
share/modulefiles/uv/main.lua, which now setsUVM_ROOT. - Nothing in the state tree changes. Existing
$UVM_ROOT/<arch>/trees, caches, tool venvs and
managed interpreters are picked up as-is — this is a rename of the inputs, not of the layout. - The Lmod modulefile derives its prefix from
myModuleVersion()and is version-agnostic. A site
deploying per-version module files still needs to add one for 0.3.0 to pin to this version.
Also in this release
Everything below predates this tag and is included because nothing before it was ever tagged.
[fix]Six correctness defects, and removal of the dead surface around them (5bb652c)[fix]Broken-pipe noise silenced instatus; symlink note corrected (f902ebf) —status
output no longer reportswrite error: Broken pipewhen piped intohead[refactor]uv-manageris the canonical script, with auvmalias (88c683b) — the four
entry pointsuv,uvx,uvmanduv-managerare one script, dispatched onargv[0][docs]Documentation follows the removals; two false claims corrected (f564cb2)[harness]A spec-driven software factory under.agents/(33a91fb) — development tooling
only; nothing a site deploys depends on it
Verification
No test suite exists yet. This release was gated by executed commands, not review alone: shellcheck
and bash -n under bash 3.2.57 (the portability floor), offline end-to-end provisioning on two
architectures with the current symlink asserted relative, uvm --version matching the tag exactly,
and uvm help rendering on a node with no state root configured — the property that makes an
unconfigured node recoverable.
Deploying
Sites install by cloning into /apps/external/uv/<version>. Use git clone or rsync -a; a cp -r
without -a will flatten bin/{uv,uvx,uvm} from symlinks into copies, which still works but stops
being one script.
git clone --depth 1 --branch 0.3.0 https://github.com/PurdueRCAC/uv-manager.git
A site tracking main picks this up on its next pull. A site pinned to a tag must be told to move.