Skip to content

bbcrossbuild 4.0.0

Latest

Choose a tag to compare

@badbat75 badbat75 released this 07 Oct 16:07

What changes since 3.1.0

  • Recipes are directories: package.env, real script files, files/, patches/ applied in name order, and variants/ (target, toolchain, arch, platform, version, option) instead of case blocks. Every package group, and projects/, is a git submodule of its own repository. Projects written for 3.x keep working; recipes in the old single-file .pkg format do not.
  • Toolchain: toolchain.functions only orchestrates. gcc, binutils, LLVM, Python, Rust and the autotools are targets of their recipes, and the versions live in the recipes, not setenv. mold is available as the default linker for gnu and llvm, and with clang -flto is on the link line too.
  • Host independence: the tools and libraries of the build machine are :native recipes. Target builds carry no host paths (path maps, gcc specs, clang configuration files). The build stops on unresolved NEEDED libraries, executable stacks, or slim LTO objects left behind. Target programs run through <HARCH>-run.
  • The bbxb command: build, logtail, mount/umount, emulator cmdgen|run (BIOS and UEFI), container, purge.
  • Configuration of the built system: project directives in osconfig.functions. Every file a directive writes is listed in <platform>/osconfig.files, and the next bbxb build removes it before the project runs, so a directive taken out of the project leaves nothing behind in the sysroot. /etc/hosts, which a directive only edits, stays.
  • NetworkManager in lfs.prj (LFS_ENABLENM=1): the WiFi network and the wired link become keyfile profiles (configure_wireless --networkmanager, configure_network --networkmanager) from the same lfs.conf settings as the .network files of systemd-networkd, with DNS through systemd-resolved. NetworkManager builds with both gnu and llvm.
  • Bluetooth of the Raspberry Pi 3 B: a chip that stops answering at boot (no flow control on the PL011) is powered on again, and systemd restarts bthelper@ (Restart=on-failure, bounded by StartLimitBurst=).
  • Checks: the bats suite (tests/), utilities/lint, pkg_lint, pkg_show and pkg_upstream. board_check and perf_check live in the projects repository.

Validation

lfs.prj was built from scratch three times in a row without rework, on rpi3-aarch64, rpi and generic-x64, with both gnu+mold and llvm+mold. Each build passed board_check in QEMU with 0 failed:

rpi3-aarch64 rpi generic-x64
gnu + mold 53 ok 53 ok 49 ok
llvm + mold 54 ok 54 ok 49 ok

The rpi3-aarch64 image with NetworkManager boots in QEMU and on a Raspberry Pi 3 B. On that board, Bluetooth came back by itself after a forced failure and after a failure on a real boot. The bats suite (186 tests) and utilities/lint pass.

Full Changelog: 3.1.0...4.0.0