8000 Tags · angr/mono · GitHub
[go: up one dir, main page]

Skip to content

Tags

Tags

nix-cache

Toggle nix-cache's commit message
Build and test all seven components from one tree

A Nix flake builds every component from its own pyproject.toml, so the
derivations follow upstream as the trees move. The hand-maintained parts are
the native wiring (Rust for angr, CMake for pyvex and pypcode), an
exact-version table for the few third-party pins whose version changes
behaviour, and the handful of packages nixpkgs does not carry.

Four of those are packaged here rather than skipped, because skipping each one
costs real coverage: pyxdia, without which five of cle's PE tests fail quietly
on a PDB that cannot be read; and pydantic-ai, mcp and fastmcp, which angr's
optional llm extra needs and which tests/llm and tests/mcp import. Nothing is
deselected — every test each component ships is run.

One workflow warms the whole closure once, publishes it as a Nix binary cache
through an actions/cache entry with a GitHub release behind it, and then runs
fourteen test jobs against it in parallel. angr is sharded ten ways with
pytest-split against recorded per-test timings, so the stage costs what its
slowest shard costs rather than what its slowest suite costs.

ci/dev-setup.sh installs every component into a .venv as an editable, so the
source tree is what runs while you are working on it, and the Nix-built
packages are what CI tests.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
0