image_pdfimage_print
Modernizing Buildman: A Case Study in AI-Assisted Refactoring

Modernizing Buildman: A Case Study in AI-Assisted Refactoring

U-Boot’s suite of Python tools—including buildman, patman, and binman—are critical parts of our development workflow. However, like any long-lived software project, technical debt accumulates. Buildman in particular was written a while ago, without much use of pylint and has grown significantly over the years. The accumulated pylint warnings, inconsistent naming conventions, and a monolithic structure…

Faster Tests and Better Debugging: Improvements to Malloc and test/py

Faster Tests and Better Debugging: Improvements to Malloc and test/py

Developing for U-Boot often involves chasing down elusive memory leaks and waiting for long test suites to finish. A recent series of 29 patches is aimed squarely at improving the developer experience in these areas. This series introduces powerful new malloc debugging tools, optimises the video subsystem, and significantly improves the performance of the test/py…

Ext4l: Bringing Full Write Support to the Linux-Ported Filesystem

Ext4l: Bringing Full Write Support to the Linux-Ported Filesystem

The effort to modernise U-Boot’s filesystem support continues with a major update to ext4l—the new ext4 driver ported directly from Linux. A recent series series of 30 patches that brings full write capabilities to the driver. So far ext4l has only supported reading. With this series, the driver now supports the full lifecycle of file…

uman: A New Developer Companion for U-Boot

uman: A New Developer Companion for U-Boot

Developing for U-Boot often involves juggling a variety of tools: buildman for compilation, patman for patch submission, test.py for integration testing, and git for version control. While these tools are powerful individually, orchestrating them—especially when dealing with complex CI pipelines and dependencies—can be tedious. To bridge these gaps, we are introducing uman (U-Boot Manager), a…

Safety at Scale: Introducing check and Per-Commit Validation in pickman

Safety at Scale: Introducing check and Per-Commit Validation in pickman

Automating cherry-picks with AI (as seen in our introduction to pickman) was a huge step forward for U-Boot Concept maintenance. However, as any maintainer knows, theory and practice often collide when you try to apply 260+ commits in a single session. After several weeks of real-world use, we’ve identified three “stress points” in large-scale cherry-picking:…

Silencing the Sphinx: Cleaner Documentation Builds

Silencing the Sphinx: Cleaner Documentation Builds

If you have ever run make htmldocs in U-Boot, you are likely familiar with the “wall of text” it produces. Between the standard Sphinx output, sub-make messages, and custom progress indicators, the build process has traditionally been very noisy. While verbose output can be useful for debugging the toolchain itself, it is a hindrance when…

Porting Linux’s EXT4 to U-Boot: Introducing ext4l

Porting Linux’s EXT4 to U-Boot: Introducing ext4l

In the world of bootloaders, balance is everything. We need enough functionality to load an OS, but we must keep the footprint small and the code maintainable. For years, U-Boot has relied on a custom implementation of the EXT4 filesystem. However, as the EXT4 format evolves with features like metadata checksums and fast commits, keeping…

Introducing Pickman: AI-Powered Cherry-Pick Management for U-Boot

Introducing Pickman: AI-Powered Cherry-Pick Management for U-Boot

Managing cherry-picks across multiple branches is one of the more tedious aspects of maintaining a large project like U-Boot. When you need to backport dozens of commits from an upstream branch while handling merge commits, resolving conflicts, and creating merge requests, the process can consume hours of developer time. Today we’re introducing pickman, a new tool…

The Best of Both Worlds: Hybrid Python/C Testing in U-Boot

The Best of Both Worlds: Hybrid Python/C Testing in U-Boot

U-Boot has two testing worlds that rarely meet. Python tests are flexible and can set up complex scenarios – disk images, network configurations, boot environments. C tests are fast, debuggable, and run directly on hardware. What if we could combine them? The Problem Consider filesystem testing. You need to: The Python test framework handles steps…