LLAR is a cloud-based multi-language package manager built with XGo. It resolves dependencies, downloads source code, and builds libraries from source using declarative formulas.
go install -ldflags="-checklinkname=0" github.com/goplus/llar/cmd/llar@latest# Install zlib and its dependencies
llar install madler/zlib@v1.3.2
# Show remote build output
llar install -v madler/zlib@v1.3.2
# Install a selected build matrix
llar install --os linux --arch amd64 --option shared=ON madler/zlib@v1.3.2
# Print the installed module result as JSON
llar install --json madler/zlib@v1.3.2
# Install and copy the root artifact into a directory
llar install -o ./zlib-out madler/zlib@v1.3.2
# Install and export the root artifact as an archive
llar install -o zlib.tar.gz madler/zlib@v1.3.2# Build zlib
llar make madler/zlib@v1.3.1
# Build with verbose output
llar make -v madler/zlib@v1.3.1
# Print the build result as JSON
llar make --json madler/zlib@v1.3.1
# Build and export to a directory
llar make -o ./output madler/zlib@v1.3.1
# Build and export as a zip archive
llar make -o zlib.zip madler/zlib@v1.3.1
# Build a local formula
llar make ./@1.0.0
llar make ./madler/zlib@v1.3.1| Command | Description |
|---|---|
llar install <module@version> |
Install a module from LLAR Cloud |
llar make <module@version> |
Build a module from source |
llar test <module@version> |
Verify a module's installed artifacts |
| Flag | Description |
|---|---|
-v, --verbose |
Enable verbose build output |
-j, --json |
Print the module result as JSON |
-o, --output <path> |
Output path (directory, .zip, or .tar.gz) |
- Formula resolution - LLAR fetches the build formula for the requested module from the formula hub
- Dependency resolution - The formula's
onRequirecallback extracts dependencies, which are resolved using MVS (Minimum Version Selection) - Build - Dependencies are built first (leaves before roots), then the main module is built via the formula's
onBuildcallback - Caching - Build results are cached per (module, version, platform) so rebuilds are instant
compareVer (a, b) => { # version comparison
...
}See LLAR Formula.
