We can't do set -o pipefail in POSIX sh, which we're using,
but the build system has x_ which wraps around a command
and executes it, exiting with non-zero status if it does.
This fact enables lbmk to have functionality that is actually
superior to pipefail, since you can more easily control
specifically which parts error.
For example:
foo | bar | foo2 | bar2 | $err "error"
ERROR exits with non-zero status, but foo2, bar and foo
would not exit on error, only bar2 would. In *bash*, which
we avoid, set -o pipefail would make all of them exit on
error, but what if you wanted "bar" to not exit?
With lbmk, you could do, in the above example, and with the
above question asked ("what if you wanted bar not to exit"):
x_ foo | bar | x_ foo2 | bar2 > file | $err "error"
of course, you could also do, if not outputting to "file":
x_ foo | bar | x_ foo2 | x_ bar2
NOTE: in lbmk, $err is a variable containing the name of
a function that does something (whatever you want) and
then exits with non-zero status.
This entire explanation is beyond the scope of simply
providing (and explaining) this fix, but I also wanted to
use this commit as an example of the power of lbmk with
regards to POSIX shell scripting.
Signed-off-by: Leah Rowe <leah@libreboot.org>
Libreboot
Documentation: libreboot.org
Support: #libreboot on
Libera IRC
Libreboot provides libre boot firmware on supported motherboards. It replaces proprietary vendor BIOS/UEFI implementations, by
- Using coreboot to initialize the hardware (e.g. memory controller, CPU, etc.) while minimizing unwanted functionality (e.g. backdoors such as the Intel Management Engine)
- ... which runs a payload such as SeaBIOS, GRUB, or U-Boot
- ... which loads your operating system's boot loader (BSD and Linux-based systems are supported).
Why use Libreboot, and what is coreboot?
A lot of users who use libre operating systems still use proprietary boot firmware, which often contain backdoors and bugs, hampering user freedom and right to repair.
coreboot provides libre boot firmware by initializing the hardware then running a payload. However, coreboot is notoriously difficult to configure and install for most non-technical users, requiring detailed technical knowledge of hardware.
Libreboot solves this by being a coreboot distribution (in the same way that Alpine Linux is a Linux distribution). It provides a fully automated build system that downloads and compiles pre-configured ROM images for supported motherboards, so end-users could easily fetch images to flash onto their devices.
Libreboot also produces documentation aimed at non-technical users and excellent user support via IRC.
Contribute
You can check bugs listed on the bug tracker.
You may use Codeberg pull requests to send patches with bug fixes or other improvements. This repository hosts the code for the main build system. The website lives in a separate repository.
Development is also done on the IRC channel.
License for this README
It's just a README file. It is released under Creative Commons Zero, version 1.0.