MANIFEST.usm is a JSON file that defines the structure, metadata, and behavior of a USM software package. This document provides a complete reference for all manifest fields.
Type: string The package identifier without spaces.
"name": "my-package"
Type: string Semantic version with optional package version suffix.
"version": "1.2.3+1"
Type: string Short description of the package.
"summary": "A sample package for demonstration"
Type: array of license objects List of licenses applicable to the package.
Each license object contains:
name (string): License namecategory (string): License category ("libre", "open-source", "source-available", "proprietary")text (string): Path to license file relative to manifest
"licences": [
{
"name": "GPLv3",
"category": "libre",
"text": "LICENSE"
}
]
Type: object Resources provided by the package. Keys are resource references, values are file specifications.
"provides": {
"bin:myapp": "as-expected",
"lib:libmyapp.so": "as-expected",
"inc:myapp.h": {"pathBase": "source", "path": "include/myapp.h", "type": "reg"}
}
Type: object Package dependencies organized by category.
runtime (array): Runtime dependenciesbuild (array): Build-time dependenciesmanage (array): Management dependenciesacquire (array, optional): Source acquisition dependencies
"depends": {
"runtime": ["lib:libc.so.6", "lib:libglib-2.0.so"],
"build": ["bin:gcc", "pc:glib-2.0.pc"],
"manage": ["bin:bash"]
}
Type: object Executable scripts for different package lifecycle phases.
build (string, required): Build script pathinstall (string, optional): Install script pathremove (string, optional): Removal script pathpostInstall (string, optional): Post-install script pathacquire (string, optional): Source acquisition script pathtest (string, optional): Test script path
"execs": {
"build": "usm-scripts/build.sh",
"install": "usm-scripts/install.sh",
"acquire": "usm-scripts/acquire.sh",
"test": "usm-scripts/test.sh"
}
Type: array of strings Package behavior flags.
"buildInSourceTree": Build in source directory"setManifestPropertyEnvs": Set manifest properties as environment variables"ninjaStyleProgress": Parse Ninja-style progress output"simpleBuildEnvironment": Copy full source tree to build directory before building and execute all build-related scripts from build directory
"flags": ["simpleBuildEnvironment"]
Type: string Path to markdown description file relative to manifest root.
"md": "DESCRIPTION.md"
Type: string Project website or repository URL.
"url": "https://github.com/example/my-package"
Type: array of strings Paths to screenshot files relative to manifest root.
"screenshots": ["screenshot1.png", "screenshot2.png"]
Type: string Path to package icon file relative to manifest root.
"icon": "my-package.svg"
Type: string Path to AppStream metainfo file relative to manifest root.
"metainfo": "my-package.appdata.xml"
Type: object Git repository information.
origin (string): Repository URLcommit (string): Commit hash, tag, or branch
"git": {
"origin": "https://github.com/example/my-package",
"commit": "v1.2.3"
}
Type: object Additional custom properties.
"extras": {
"customField": "customValue",
"buildSystem": "cmake"
}
When using object notation in provides, files can be specified with:
Base location for the file:
"source": Extracted source directory"build": Build output directory"install": Install destination directory"as-expected": Standard system locationFile path relative to pathBase. Empty string when pathBase is "as-expected".
File system entry type:
"reg": Regular file"dir": Directory"lnk": Symbolic linkDestination path for symbolic links (required when type is "lnk").
Array of conditions when resource should not be deleted:
"final": During final uninstallation"upgrade": During package upgrade"downgrade": During package downgradeArray of conditions when resource should not be installed:
"fresh": During fresh installation"upgrade": During package upgrade"downgrade": During package downgradeFiles can be specified using shorthand notation:
"as-expected": Standard location"build:path/to/file": From build directory"source:path/to/file": From source directory"install:path/to/file": From install directoryUSM validates manifests for:
This reference provides complete specification for MANIFEST.usm files used by USM packages.