Skip to main content

kas wrapper for Yocto BSP builds - repo tool sync, pre-flight checks, triage

Project description

bakar

CI PyPI Python License Coverage

kas-based BSP build orchestrator for Yocto. Wraps kas-container with manifest-driven sync, pre-flight checks, structured telemetry, and post-mortem tooling. Works with NXP i.MX (repo XML), TI Sitara (oe-layertool), bitbake-setup workspaces, and any bring-your-own kas YAML.

bakar build UI

Features

  • Multi-BSP, out of the box - NXP i.MX (repo XML), TI Sitara (oe-layertool), bitbake-setup workspaces, meta-avocado, and any bring-your-own kas YAML, with automatic family detection. See docs/workspace.md.
  • Idempotent build pipeline - doctor -> sync -> gen-kas -> kas-container build in one command, with dry-run, --dry-run-script (emit a runnable shell script for the full invocation), keep-going, and from-scratch rebuild. See docs/build.md, docs/sync.md, docs/gen-kas.md.
  • Pre-flight diagnostics - ~30 host/container/workspace checks with PASS/WARN/BLOCK gating and PSI throttle calibration. See docs/doctor.md.
  • Live build UI - a phase-aware Rich display: a parse-progress bar, then a per-task table showing every recipe building in parallel with task-type icons, an ETA, and stuck-task highlighting (a recipe running far longer than its peers turns red). Assumes a truecolor terminal and a Nerd Font.
  • Observability and post-mortem - per-run telemetry (events.jsonl, logs, timing, disk usage) plus a normalized bitbake event stream (bitbake-events.json) parsed from bitbake's own event log on every build. bakar triage reads that artifact to name the failing recipe/task and print the recorded logfile excerpt (with a kas.log fallback for older runs), and selects the right run dir under a multi-release preset fan-out via --run/--preset/--release. See docs/triage.md, docs/report.md, docs/log.md.
  • Reproducibility - pin floating layer SHAs, diff manifests/configs, detect workspace drift (bakar drift), generate release notes between pinned states (bakar changelog), flatten the resolved kas YAML, pre-fetch sources for offline builds, and seed a host-side premirror git2_*.tar.gz tarball from a git URL. See docs/lock.md, docs/diff.md, docs/drift.md, docs/changelog.md, docs/dump.md, docs/prefetch.md, docs/mirror.md.
  • Recipe operations - run one recipe or task through bakar bitbake (logged, exit-code-faithful), clean a single recipe's sstate with bakar clean-recipe, and analyze a recipe's dependency graph (blast radius, longest chain, cycles) with bakar graph. See docs/bitbake.md, docs/graph.md.
  • Build performance and robustness - ccache (per-workspace or shared), NPROC-scaled parallelism, PSI throttling, curated mirrors, persistent hash-equivalence server, and age-based sstate/ccache pruning. See docs/hashserv.md, docs/clean-cache.md.
  • Shell and scripting - interactive/one-shot kas-container shell, run a command in every source repo, boot a QEMU image from the build dir. See docs/shell.md, docs/for-all.md, docs/run.md.
  • Named presets - name a full build configuration in config.toml and invoke it with bakar build --preset <name>; multi-release presets fan out to N sequential builds with a summary table. Manage presets with bakar presets list/show/add/remove. See docs/presets.md.
  • Shell completion - tab-completion for all subcommands, flags, and preset names. bash and zsh via bakar --install-completion; fish via a generator script. See docs/completion.md.
  • Layered configuration - CLI > BAKAR_* env > workspace .bakar.toml > preset > user config.toml > BSP default, plus a settings CRUD interface and a vendor config layer for custom board families. See docs/settings.md, docs/configuration.md.
  • Advanced tooling - swap the BSP-bundled bitbake for a local upstream checkout, and stress-test the bitbake parser fork race. See docs/bitbake-override.md, docs/stress-parse.md.
  • Workspace scaffolding - init wizard (interactive or --family) writes .bakar.toml. See docs/init.md.
  • Read-only inspection - query any BitBake variable (getvar), dump resolved build metadata (show), inspect layer stack and override precedence (layers inspect/status), compare task signatures across builds (diffsigs), and walk the full recipe environment (inspect). See docs/getvar.md, docs/show.md, docs/layers.md, docs/inspect.md, docs/diffsigs.md.

Install

uv tool install git+https://github.com/jetm/bakar.git

Quickstart

# NXP i.MX manifest-driven build
bakar build -f imx-6.12.49-2.2.0.xml -m imx8mp-var-dart

# Bring-your-own kas YAML
bakar build my-project.yml

# Post-mortem a failed build
bakar triage

Documentation

Full command reference, workflow guides, and configuration: docs/index.md

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bakar-0.15.0.tar.gz (196.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bakar-0.15.0-py3-none-any.whl (244.5 kB view details)

Uploaded Python 3

File details

Details for the file bakar-0.15.0.tar.gz.

File metadata

  • Download URL: bakar-0.15.0.tar.gz
  • Upload date:
  • Size: 196.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for bakar-0.15.0.tar.gz
Algorithm Hash digest
SHA256 5193b0703cbd9ab5ce9e5afeb8da0cf2776deb4b007f95eab04b03527522448a
MD5 a1152d6b2b81ca6f5b85c0096d0661bf
BLAKE2b-256 0ce1ea045c993ea5796370209e4cfb9a92c5bdd07039d7fc0527bda58315f930

See more details on using hashes here.

Provenance

The following attestation bundles were made for bakar-0.15.0.tar.gz:

Publisher: publish.yml on jetm/bakar

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bakar-0.15.0-py3-none-any.whl.

File metadata

  • Download URL: bakar-0.15.0-py3-none-any.whl
  • Upload date:
  • Size: 244.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for bakar-0.15.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dea45740d0753c6222402bc2c7be641522ee9d45c2fc0a36bfa00b6c9de875b0
MD5 46ed4b9b209cf285795ffd566fb6d12d
BLAKE2b-256 1cb040470a3bfd8028deef8353fb53fb7e5d74f22e05acc456fa8d57c664130e

See more details on using hashes here.

Provenance

The following attestation bundles were made for bakar-0.15.0-py3-none-any.whl:

Publisher: publish.yml on jetm/bakar

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page