Package Format
Packages are defined using JSON manifests. This document describes the format.
Basic Structure
{
"name": "example-package",
"version": "1.0.0",
"description": "An example package",
"source": {
"type": "git",
"url": "https://github.com/user/repo.git",
"branch": "main"
},
"dependencies": ["libfoo@1.0.0", "libbar"],
"build_dependencies": ["cmake@3.20.0", "pkg-config"],
"build_system": "cmake",
"cmake_args": ["-DBUILD_SHARED_LIBS=ON"],
"env": {
"CXXFLAGS": "-O2"
}
}
Multi-Version Format
Packages can have multiple versions:
{
"name": "example-package",
"versions": [
{
"version": "1.2.0",
"description": "Latest version",
"source": {...},
"dependencies": [...],
...
},
{
"version": "1.1.0",
"description": "Previous version",
"source": {...},
"dependencies": [...],
...
}
]
}
Required Fields
name: Package name (must match filename)version: Package version (orversionsarray for multi-version)description: Brief descriptionsource: Source information (see below)
Source Types
Tarball
Git Repository
Or with a specific tag or commit:
Zip Archive
Local Directory
Build Systems
Autotools
CMake
{
"build_system": "cmake",
"cmake_args": [
"-DBUILD_SHARED_LIBS=ON",
"-DCMAKE_BUILD_TYPE=Release"
]
}
Meson
Make
Custom
Dependencies
Runtime Dependencies
Build Dependencies
Dependencies can be:
- Unversioned: "zlib"
- Versioned: "curl@8.7.1"
Environment Variables
Patches
Optional Fields
configure_args: Arguments for./configure(autotools)cmake_args: Arguments forcmakemeson_args: Arguments formesonmake_args: Arguments formakeenv: Environment variablespatches: Array of patch file URLs or pathsbuild_commands: Custom build commands (for custom build system)
Example Package Definitions
See the packages/ directory for complete examples.
Version Constraints
When specifying dependencies, you can use version constraints:
"package"- Any version"package@1.0.0"- Exact version- Version matching is done by string comparison
Best Practices
- Use semantic versioning for versions
- Include version in source URL when possible
- Specify build dependencies explicitly
- Use consistent URL patterns across versions
- Document any special build requirements in description