Overview
Thebuild command discovers and invokes all BuilderConfigFile subclasses across the project and its dependencies to create distributable artifacts such as PyInstaller executables, documentation archives, and custom build processes.
What It Does
The command executes a comprehensive build process:Discover builders
Finds all non-abstract
BuilderConfigFile subclasses across the project and dependencies.Create artifacts
Builds artifacts in temporary directories according to each builder’s configuration.
Add platform suffixes
Renames artifacts with platform-specific suffixes (e.g.,
-Linux, -Windows, -Darwin).Usage
Basic Usage
With Verbose Output
Quiet Mode
Expected Output
Generated Artifacts
After runningbuild, your dist/ directory contains:
Platform-specific suffixes are automatically added based on
platform.system() output.Build Process
Discovery
The command discovers builders across the entire dependency chain:Priority Groups
Builders are organized by priority:Higher priority builders execute first. Builders within the same priority group execute in parallel.
Parallel Execution
- Within priority groups: Builders execute in parallel
- Across priority groups: Executed sequentially (highest first)
Platform-Specific Naming
Artifacts are automatically renamed with platform suffixes:| Platform | platform.system() | Suffix | Example |
|---|---|---|---|
| Linux | 'Linux' | -Linux | myproject-Linux |
| Windows | 'Windows' | -Windows | myproject-Windows.exe |
| macOS | 'Darwin' | -Darwin | myproject-Darwin |
Creating Custom Builders
Define a custom builder by subclassingBuilderConfigFile:
PyInstaller Integration
pyrig includes built-in PyInstaller support:Behavior
Automatically finds all non-abstract
BuilderConfigFile subclasses across dependencies.Validation triggers the build process via each builder’s
dump() method.Each builder uses a temporary directory for isolation during builds.
All artifacts are moved to
dist/ after successful builds.Only non-abstract
BuilderConfigFile subclasses are executed.When to Use
Use build When:
- Creating distributable executables
- Preparing artifacts for release
- Building documentation archives
- Creating platform-specific builds
- Packaging for deployment
Example Workflow
Troubleshooting
Build Failures
If a builder fails:- Run with verbose output:
uv run pyrig -vv build - Check the builder’s logs
- Verify dependencies are installed
- Check temporary build directories
Missing Artifacts
If artifacts aren’t created:- Verify builder classes are non-abstract
- Check that builders are discovered (use
-v) - Ensure
build()method returns a valid path
Platform Issues
For platform-specific builds:- Run builds on each target platform
- Use CI/CD for multi-platform builds
- Check platform detection:
python -c "import platform; print(platform.system())"
Related Commands
- mkroot - Generate configuration files (may include builder configs)
- protect-repo - Configure repository for releases
Implementation
Thebuild command calls BuilderConfigFile.validate_all_subclasses(), which discovers and validates all builder subclasses. Each builder’s validation triggers its build process. See pyrig/rig/cli/commands/build_artifacts.py:10.
Run
uv run pyrig build --help to see the command’s built-in help text.