Igor Pecovnik 3640a9d289 validate-board-config: follow source ${SRC}/config/boards/<foo> inheritance
`Validate changed board configs` (PR #9747 CI run 25258999953) failed
on the three Ayn-Odin2 derivative boards with:

    ERROR: config/boards/ayn-odin2mini.csc: BOARDFAMILY: required, ...
    ERROR: config/boards/ayn-odin2mini.csc: KERNEL_TARGET: required, ...
    (same pair on ayn-odin2portal.csc and ayn-thor.csc)

The validator's header explicitly says it does NOT source the file
("boards have side-effecty function bodies"), and the regex
`parse_assignments` only sees top-level `KEY=value` lines. Boards
that consist of one `source "${SRC}/config/boards/<parent>.csc"` line
plus a handful of overrides (BOARD_NAME, BOARD_VENDOR, BOARD_MAINTAINER,
ARCH) inherit BOARDFAMILY / KERNEL_TARGET / KERNEL_TEST_TARGET from
the parent, so the validator saw them as missing and erred out.

The errors are pre-existing — they would fire on any future change
to those .csc files. PR #9747 just made them visible by being the
first PR to touch an inheriting board since the validator landed.

Add `collect_inherited_assignments`: when a top-level `source` line
points at another file under config/boards/ (matched by a regex
anchored to start-of-line so `source` calls inside function bodies —
which are always indented — aren't followed), parse that file's
top-level assignments and lay them behind the child's own. Child's
explicit values still win via dict.setdefault.

Recursion is guarded by a visited set keyed on resolved paths, so
a self-source or a parent-source-child cycle terminates instead of
looping. Missing source targets are silently skipped — the main
required-field checks will still flag any field that ends up unset
after the merge, so a typo'd source path doesn't mask a real gap.

Verified against the five PR-changed files: 6 errors → 0 errors,
4 warnings → 1 warning (the unmaintained-board warning on
aml-t95z-plus.tvb, which is unrelated to inheritance and was
already there). Self-contained boards (musepipro.conf etc.)
produce identical output to before this change.
2026-05-02 20:56:34 +02:00
2026-05-01 20:53:40 +02:00
2026-02-09 00:28:39 +01:00
2014-10-08 10:14:29 +02:00
2026-01-31 09:32:23 +01:00
2026-03-17 22:45:44 +01:00

Armbian logo

Purpose of This Repository

The Armbian Linux Build Framework creates customizable OS images based on Debian or Ubuntu for single-board computers (SBCs) and embedded devices.

It builds a complete Linux system including kernel, bootloader, and root filesystem, giving you control over versions, configuration, firmware, device trees, and system optimizations.

The framework supports native, cross, and containerized builds for multiple architectures (x86_64, aarch64, armhf, riscv64) and is suitable for development, testing, production, or automation.

Looking for prebuilt images? Use Armbian Imager — the easiest way to download and flash Armbian to your SD card or USB drive. Available for Linux, macOS, and Windows.

Quick Start

git clone https://github.com/armbian/build
cd build
./compile.sh

Build demonstration

Build Host Requirements

Hardware

  • RAM: ≥8GB (less with KERNEL_BTF=no)
  • Disk: ~50GB free space
  • Architecture: x86_64, aarch64, or riscv64

Operating System

  • Native builds: Armbian or Ubuntu 24.04 (Noble)
  • Containerized: Any Docker-capable Linux
  • Windows: WSL2 with Armbian/Ubuntu 24.04

Software

  • Superuser privileges (sudo or root)
  • Up-to-date system (outdated Docker or other tools can cause failures)

Resources

  • Documentation — Comprehensive guides for building, configuring, and customizing
  • Website — News, features, and board information
  • Blog — Development updates and technical articles
  • Forums — Community support and discussions

Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines on reporting issues, submitting changes, and contributing code.

Support

Community Forums

Get help from users and contributors on troubleshooting, configuration, and development. 👉 forum.armbian.com

Real-time Chat

Join discussions with developers and community members on IRC or Discord. 👉 Community Chat

Paid Consultation

For commercial projects, guaranteed response times, or advanced needs, paid support is available from Armbian maintainers. 👉 Contact us

Contributors

Thank you to everyone who has contributed to Armbian!

Contributors

Armbian Partners

Our partnership program supports Armbian's development and community. Learn more about our Partners.

S
Description
Armbian Linux build framework generates custom Debian or Ubuntu image for x86, aarch64, riscv64 & armhf
Readme GPL-2.0
1,021 MiB
Languages
Shell 67.2%
Python 11.8%
GSC 8.6%
Batchfile 4.4%
C 3.4%
Other 4.5%