Overview
angr Management uses PyInstaller to create standalone executables for Windows, macOS, and Linux. The build process bundles Python, Qt, and all dependencies into distributable packages.Prerequisites
Install Build Dependencies
Install the PyInstaller dependency group:pyinstaller==6.16.0- Executable bundlerpillow- Image processing (macOS)keystone-engine- Assembler engine (non-Linux ARM64)angr[unicorn]- Full angr with emulation support
Building with PyInstaller
Basic Build
Run PyInstaller with the spec file:dist/angr-management/- Onedir bundle (directory with executable and dependencies)dist/angr-management.app- macOS application bundle (macOS only)
Build Script
The automated build script handles platform-specific packaging:- Syncs dependencies with
uv sync --python "3.12" - Runs PyInstaller
- Creates platform-specific packages in
upload/
Platform-Specific Outputs
macOS:PyInstaller Spec File
Theangr-management.spec file configures the build process:
Key Configuration
Included Data Files
The spec file bundles these resources:Platform-Specific Bundles
Linux-specific additions:Release Process
Nightly Builds
Automated nightly builds run via GitHub Actions:- Builds on all platforms (Ubuntu 22.04/24.04, Windows 2022, macOS 15)
- Creates platform-specific packages
- Tests installations
- Publishes to GitHub releases as “nightly” tag
Build Matrix
Builds are created for:- Ubuntu: 22.04, 24.04 (x86_64 and ARM64)
- Windows: 2022 (x86_64)
- macOS: 15 (Intel and Apple Silicon)
AppImage (Linux)
Additional AppImage builds for Ubuntu:Testing Builds
Ubuntu Testing
Tests run inxvfb (headless X server):
Windows Testing
Tests use a Python script to verify installation:macOS Testing
Tests verify the app launches:Troubleshooting
Build Failures
If builds fail, check:- PyInstaller logs - Look for missing imports or data files
- Nightly build pipeline - Reference
.github/workflows/pyinstaller-build.yml - PyInstaller documentation - pyinstaller.org
Common Issues
Missing imports:- Check platform-specific sections in the spec file
- Reference the CI workflow for the target platform
- Test in the same environment as CI (same OS version)
Manual Release
To create a manual release:- Trigger workflow:
- Download artifacts:
- Create release:
Version Management
The version is read fromangrmanagement.__version__: