From: Simon Glass <sjg@chromium.org> This series adds distributed build support to buildman, allowing board builds to be spread across a pool of remote machines over SSH. The first few patches prepare Builder for distributed use: adding parameters for custom thread classes, signal handling, lazy worktree setup, and splitting build_boards() so remote workers can queue boards incrementally. The machine module probes remote hosts over SSH to collect their capabilities (CPUs, memory, load, toolchains) and manages toolchain version checking and fetching. The worker module runs on remote machines in --worker mode, accepting JSON commands on stdin and streaming results on stdout. It reuses Builder and BuilderThread with a custom subclass that sends results over the SSH pipe instead of writing to disk. The boss module manages SSH connections to workers, handling startup, source push via git, demand-driven board dispatch, result collection with timeouts, and clean shutdown on Ctrl-C. The wire-up patch connects everything through control.py with --dist, --use-machines, and --no-local flags. Simon Glass (20): u_boot_pylib: Add stdin_data support to run_pipe() u_boot_pylib: Support passing modules to run_test_suites() buildman: Remove unused imports from builder.py buildman: Fix pylint warnings in test_builder.py buildman: Fix import order in control.py buildman: Initialise _timestamps to an empty deque buildman: Add thread_class param to Builder buildman: Add handle_signals param to Builder buildman: Add lazy thread setup to Builder buildman: Split build_boards() into two methods buildman: Add distributed-build attributes to Builder buildman: Cache the kconfig-changed check per commit buildman: Add dynamic job-count setting buildman: Pass NPROC to make for LTO parallelism buildman: Add remote machine probing for distributed builds buildman: Install toolchains on remote machines buildman: Add worker mode for distributed builds buildman: Add boss module for driving remote workers buildman: Wire up distributed builds with WorkerPool buildman: Document distributed builds in the README tools/buildman/boss.py | 1507 ++++++++++++++++++ tools/buildman/bsettings.py | 10 +- tools/buildman/builder.py | 228 ++- tools/buildman/builderthread.py | 94 +- tools/buildman/buildman.rst | 132 ++ tools/buildman/cmdline.py | 30 + tools/buildman/control.py | 313 +++- tools/buildman/func_test.py | 9 +- tools/buildman/machine.py | 923 +++++++++++ tools/buildman/main.py | 6 + tools/buildman/test.py | 3 + tools/buildman/test_boss.py | 2645 +++++++++++++++++++++++++++++++ tools/buildman/test_builder.py | 109 +- tools/buildman/test_machine.py | 1080 +++++++++++++ tools/buildman/test_worker.py | 896 +++++++++++ tools/buildman/worker.py | 985 ++++++++++++ tools/u_boot_pylib/command.py | 13 +- tools/u_boot_pylib/test_util.py | 49 +- 18 files changed, 8877 insertions(+), 155 deletions(-) create mode 100644 tools/buildman/boss.py create mode 100644 tools/buildman/machine.py create mode 100644 tools/buildman/test_boss.py create mode 100644 tools/buildman/test_machine.py create mode 100644 tools/buildman/test_worker.py create mode 100644 tools/buildman/worker.py -- 2.43.0 base-commit: cb53f60f48853713f398b86a12702304c82bdde7 branch: bmt