Repository navigation
What changes since 3.1.0
- Recipes are directories:
package.env, real script files,files/,patches/applied in name order, andvariants/(target, toolchain, arch, platform, version, option) instead ofcaseblocks. Every package group, andprojects/, is a git submodule of its own repository. Projects written for 3.x keep working; recipes in the old single-file.pkgformat do not. - Toolchain:
toolchain.functionsonly orchestrates. gcc, binutils, LLVM, Python, Rust and the autotools are targets of their recipes, and the versions live in the recipes, notsetenv. mold is available as the default linker for gnu and llvm, and with clang-fltois on the link line too. - Host independence: the tools and libraries of the build machine are
:nativerecipes. 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
bbxbcommand: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 nextbbxb buildremoves 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 samelfs.confsettings as the.networkfiles 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 byStartLimitBurst=). - Checks: the bats suite (
tests/),utilities/lint,pkg_lint,pkg_showandpkg_upstream.board_checkandperf_checklive 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