Module build

Module build 

Source
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

  1. Create build sandboxes (one per build_threads)
  2. Execute pre-build script in each sandbox
  3. Build packages in parallel, respecting dependencies
  4. Execute post-build script after each package
  5. Destroy sandboxes and generate report

§Build Phases

Each package goes through these phases in turn:

  • pre-clean - Clean any previous build artifacts
  • depends - Install required dependencies
  • checksum - Verify distfile checksums
  • configure - Configure the build
  • build - Compile the package
  • install - Install to staging area
  • package - Create binary package
  • deinstall - 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
BuildOptions
Options that control build behavior.
BuildResult
Result of building a single package.
BuildSummary
Summary of an entire build run.

Enums§

BuildOutcome
Outcome of a package build attempt.