xb

A tiny hermetic build system.

Source + README: git.ryansepassi.com/xb

Install

go install xb.ryansepassi.com/cmd/xb@latest

Use as a library

xb is also importable as a Go library:

import xb "xb.ryansepassi.com"            // embed the build engine
import "xb.ryansepassi.com/recipe"         // talk to the engine from a Go recipe

See doc/library-api.md (embedder API) and doc/recipe-client.md (recipe-protocol client).

Download directly

Pubkey: RWT0q2uNQxMIUh6IERC5naRJWGGrFZGNkT4hXTk0O+ZFvz2xUTKbbC+Q
Also available at /xb.pub.

Or as a script (requires minisign):

set -ex

# OS={linux,darwin} ARCH={arm64,amd64}
OS=darwin
ARCH=arm64
V=$(curl https://xb.ryansepassi.com/dl/xb/LATEST)

F=xb-${OS}-${ARCH}.tar.gz

# TOFU xb minisign key
mkdir -p ~/.minisign
[ -f ~/.minisign/xb.pub ] || curl -fsSL -o ~/.minisign/xb.pub https://xb.ryansepassi.com/xb.pub

curl -fsSL -O https://xb.ryansepassi.com/dl/xb/${V}/${F} \
           -O https://xb.ryansepassi.com/dl/xb/${V}/${F}.minisig

minisign -V -p ~/.minisign/xb.pub -m ${F}
tar xzvf ${F}
rm ${F} ${F}.minisig
echo "put xb on your PATH"