Skip to content
Gordon Heydon edited this page Jul 27, 2026 · 2 revisions

mv_package — a package manager for MultiValue

mv_package is Composer/npm for the PICK world: a pure MultiValue BASIC client (MVPKG) that talks to a small Node.js registry over HTTP, resolves a package, downloads its release tar archive, and installs it into an account. The repository is an MVX account (an mvx-git account).

Two ways to get a package

  • Release (binary). MVPKG install <name> downloads a pre-built release tar and unpacks it whole — never compiled — so a release may be binary-only (pre-built CATALOG/LIB, no BP source).
  • Dev / source. Clone the package's own mv_git repository and build it with the target platform's toolchain.

The client — MVPKG

Commands are case-insensitive:

MVPKG install <name> [<dest>]   download the release tar, install into <dest>
MVPKG info <name>               show a package's registry metadata
MVPKG search <term>             list packages whose name/description matches
MVPKG setup <url>               set (and persist) the registry base URL
MVPKG config                    show the current registry URL

The only non-MultiValue operations (untar, mkdir) go through the MVPKGOS subroutine — the one per-platform seam. HTTP is a language extension on MVX (HTTPGET/HTTPGETFILE).

The registry — server/

A dependency-free Node.js HTTP registry: GET /package/<name>, GET /search?q=<term>, GET /tarball/<file>. Register a release built from any account with server/mkrelease.sh.

Build and test

MVX_HOME=/path/to/mvx-lang ./build.sh        # catalog MVPKG + MVPKGOS
MVX_HOME=/path/to/mvx-lang ./test/run.sh     # end-to-end install-loop test