USM (Universal Source Manifest) is a JSON-based package management system that defines software packages through manifest files. This guide provides package maintainers with comprehensive information for creating and managing MANIFEST.usm files.
A USM package consists of:
MANIFEST.usm: JSON manifest file at the project rootusm-scripts/: Directory containing executable scripts (optional, recommended)USM provides scaffold templates to quickly create new packages:
usm scaffold <package-name> <template> [attributes...]
Available templates:
basic: Creates only MANIFEST.usmmakefile: Adds make build system supportmeson: Adds Meson build system supportAttributes:
vala: Add Vala language dependenciesc: Add C language dependenciesacquire: Add source acquisition supportCreate MANIFEST.usm at the project root with required fields:
name: Package identifier (no spaces)version: Semantic version with optional package versionsummary: Short descriptionlicences: Array of license objectsprovides: Resources provided by the packagedepends: Package dependenciesexecs: Executable scriptsflags: Package behavior flagsusm manifest build <build-path>
usm manifest install <build-path>
usm manifest package
This creates a .usmc (USM Complete) archive containing the manifest and all source files.
usm manifest autoprovides [--replace] [build-path]
Scans build output to automatically generate the provides section.
USM validates manifests for:
Use semantic versioning: MAJOR.MINOR.PATCH+PACKAGE_VERSION
+N for packaging revisionsas-expected for standard file locationsprovidesPackages can be distributed through USM repositories using:
PACKAGES.usml: Package listing filesRepo.usmr: Repository metadataCommon issues and solutions:
provides matches actual build outputThis guide provides package maintainers with essential information for creating, managing, and distributing USM packages effectively.