Expand description
Parallel package builds.
This module provides the Build struct for building packages in parallel
across multiple sandboxes. Packages are scheduled using a dependency graph
to ensure correct build order.
§Build Process
- Create build sandboxes (one per
build_threads) - Execute pre-build script in each sandbox
- Build packages in parallel, respecting dependencies
- Execute post-build script after each package
- Destroy sandboxes and generate report
§Build Phases
Each package goes through these phases in turn:
pre-clean- Clean any previous build artifactsdepends- Install required dependencieschecksum- Verify distfile checksumsconfigure- Configure the buildbuild- Compile the packageinstall- Install to staging areapackage- Create binary packagedeinstall- Test package removal (non-bootstrap only)clean- Clean up build artifacts
§Example
use bob::{Build, BuildOptions, Config, Database, RunContext, Scan};
use std::sync::Arc;
use std::sync::atomic::AtomicBool;
let config = Config::load(None, false)?;
let db_path = config.logdir().join("bob").join("bob.db");
let db = Database::open(&db_path)?;
let mut scan = Scan::new(&config);
// Add packages...
let ctx = RunContext::new(Arc::new(AtomicBool::new(false)));
scan.start(&ctx, &db)?;
let result = scan.resolve(&db)?;
let mut build = Build::new(&config, result.buildable, BuildOptions::default());
let summary = build.start(&ctx, &db)?;
println!("Built {} packages", summary.success_count());Structs§
- Build
- Build
Options - Options that control build behavior.
- Build
Result - Result of building a single package.
- Build
Summary - Summary of an entire build run.
Enums§
- Build
Outcome - Outcome of a package build attempt.