% Libreboot Build System Audit 3 % Leah Rowe % 20 October 2023
NOTE: Libreboot standardises on flashprog now, as of 27 January 2024, which is a fork of flashrom.
This article pertains to the current Libreboot (lbmk) revision at this time
of writing, which is c7e764a3f088e2dbcacb507995476ce3082451ef
from 20
October 2023. A release is also being compiled today, 20 October 2023, based
upon that revision, and will be announced soon.
A lot of work has gone into Libreboot since Libreboot Build System Audit 2, the main focus of which has been yet another audit; audit2 and the audit before that was mild by comparison.
It was previously planned that audit2 would come just before a release, but I decided that I would perform another audit immediately, so there have been two audits (this audit, dubbed audit 3, and the previous audit 2) between now and the Libreboot 20230625 release.
The focus has been improved error handling, general bug fixing and improving the efficiency of lbmk (in terms of speed). Reduced complexity. The focus has therefore been on the build system, lbmk, which you can read about in the lbmk maintenance manual.
This audit, today, has resulted in a substantial code size decrease in the Libreboot build system, now totalling 1744 source lines when counting shell scripts; after audit2, the sloccount was 2644 sloc and in Libreboot 20230625 it was 3388.
That's a 34 percent reduction versus audit2, and 48.5 percent versus 20230625. That is without reducing any functionality, in any way. Many new features have been implemented.
NOTE: In this summarised list, only those changes that pertain to the audit have been listed, because I'm writing a release announcement simultaneously. Therefore, all changes (including audit-related) will be in the release announcement, but only audit changes will be listed below. Not all changes are listed, in the summarised list below, but a full list is written later on in this article.
To re-iterate: only audit-related changes will be listed, and even then, not all changes are listed below; a full list of actual commits is printed, further down.
Overall changes (summary):
x_
instead (more
on this later)./tmp
handling; tmpfiles are now robustly cleaned, on exit from lbmk.config/git/
Here's a more full list of changes, expanding on the above; some entries above are also repeated below but in more detail:
--mtime
and option options in GNU Tar (if it is actually GNU Tar), when
creating Tar archives. This results in partially reproducible source archives,
and consistent hashes were seen in testing, but not between distros..git
within lbmk, for the build system itself, if
Git history was removed as in releases. This work around some build systems
like coreboot that use Git extensively, and are error-prone without it.-k
grub.cfg
, because it causes trouble in some
non-interactive setups where the user sees an errant message on the screen
and has to press enter. This fixes boot interruptions in some cases, allowing
normal use of the machine. The pager was initially enabled many years ago,
to make use of cat a bit easier in the GRUB shell, but the user can just
enable the pager themselves if they really want to.include/option.sh
include/
, and main scripts in script/
,
called by the main build
scriptme_cleaner
setvars
function defined under include/err.sh
config/git
or config/vendor
are now
concatenated, traversing recursively through the target directory; files first,
then directories in order, and for each directory, follow the same pattern
until all files are concatenated. This same logic is also used for patches.
This now enables use of subdirectories, in some config/patch directories.util/nvmutil
cp
to copy links.err
, or just something that belongs on the error
output (instead of standard output).-B
option in make commands./tmp
for ROM images when inserting vendor files.
In case /tmp
is a tmpfs and not much RAM is available, it is paramount that
the user's file system is used instead, where there is likely greater capacity;
it is done under tmp/
in lbmk (not to be confused with /tmp
)./tmp
, because it might be a tmpfs with
little memory available; clone into tmp/gitclone
instead, within lbmk,
and mv
it to avoid unnecessary additional writes (mv
is much more efficient
than cp
, for this purpose).target.cfg
handling in vendor scripts, because they use
the concatenated config format instead (they always have).me7_updater_parser.py
to util/
(not under script/
)config/ifd
so the vendorfile directory became redundant.resources/scripts/
is now script/
,
and resources/
was renamed to config/
; ifd and gbe files were also moved
to config/ifd/
. Commands are now 1-argument instead of 2, for example
the ./build boot roms
command is now ./build roms
.read
command that is built into sh
, reading each line.
This is more efficient, and provides more robust handling on lines with
spaces in them.microcode_required="y"
on most boards, but leave it set to "n"
on
platfroms such as GM45 (ThinkPad X200/T400, Dell E6400, etc); anything that
can run without blobs, in other words.target.cfg
files in multi-tree projects coreboot,
SeaBIOS and U-Boot. Unified to all such projects, under one script, and
with improved error handling../build dependencies x
commands still work
as root (they're the only commands available as root).list
command has been mostly unified, making it easier to tell (from
lbmk) what commands are available, without having to manually poke around
under script/
.-T0
flag is now used, universally, on xz commands. This makes xz
run
on multiple threads, greatly speeding up the creation of large tar archives.-j
in make commands, for multi-threading, but it relies
on nproc
to get thread count, so this only works if you have nproc
(you
probably don't, if you run BSD; BSD porting is still on TODO for Libreboot).gitcheck
; now, a global git name/email config is always required.
The only behaviour (setting local config, and unsetting) was quite error-prone
under fault conditions, where cleanup may not have been provided, or when
execution was interrupted, resulting sometimes in accidentally committing
to lbmk.git
as author named lbmkplaceholder
.x_
or err
is used to provide such behaviour. This results in all
exits from lbmk being consolidated to err
, under fault conditions. - zero
exits are also consolidated, going only through the main script, which has its
own exit function called lbmk_exit
that provides TMPDIR
cleanup.dl_path
, don't move it, when downloading and extracting a vendor
file. This reduces the change of it being missing later when lbmk is run again.err
function (and functions
that use it) inside include/err.sh
; there is also x_
which can be used
to run a command and exit automatically with non-zero status, useful because
it provides more verbose output than if you just relied on set -e
, and it
still works when a script does not use set -e
- however, it is not used
on all functions, because it works by executing $@
directly, which can break
depending on arguments. Therefore, some scripts just default to || err
for
providing breakage in scripts.elf/
, as are payloads, then they are joined separately by
the usual ROMs build script, and these cached ROMs contain many changes in
them that were previously handled by moverom
in the main ROM build script.
Under the new design, repetitive steps are avoided; payloads are inserted into
a copy of the cached ROMs under TMPDIR
, before being copied for keymaps
and small files; this eliminates delays caused by slow compression (LZMA is
always used, when inserting payloads). After crossgcc and the payloads are
compiled, the ROM with coreboot builds in under a minute, whereas it would
have previously taken several minutes on most Libreboot-supported hardware.include/
and its functions are called by the main build script, which
provides a stub for this.script/
, inheriting the TMPDIR
variable set (and exported) by lbmk./tmp
handling; a universal TMPDIR
is set (environmental
variable) and exported to all child processes running lbmk scripts. On exit,
the main tmp directory is purged, cleaning all tmp directories under it.The list above was written based on reading of the Git log, which was taken by running the command under lbmk:
git log --graph --pretty=format:'%Cred%h%Creset %s %Creset' --abbrev-commit 20230625..c7e764a3f088e2dbcacb507995476ce3082451ef
The commits are, thus:
* c7e764a3 update/release: confirm vdir path on exit
* 1c8b2114 update/release: copy crossgcc to archive
* 54a05fc1 always re-generate .git in lbmk
* 52c9416b update flashprog revision
* af1c1e10 add backup git repo for flashprog
* 18364822 Revert "config/git: don't download flashprog"
* ac442808 config/git: add more backup repos
* 75980052 git/config: don't use github on main repos
* bf4ea810 config/git: don't download flashprog
* da3044e7 git/config stm32-vserprog: don't fetch libopencm3
* 782371a5 update/release: delete *all* .git and .gitmodules
* 743a425c include/git: fix already-exists download message
* 73145b79 Revert "Revert "include/git: don't re-download single-trees""
* 31b35bb4 include/git: fix error caused by sh idiosyncrasy
* baa3d4f2 Revert "include/git: don't re-download single-trees"
* 8de7bc93 include/git: don't re-download single-trees
* d1f23eca config/git: remove rpi-pico-tinyusb dependency
* 97e5207e config/git: give pico-sdk its own file
* 182ee8e4 update/trees: don't run make if mode=fetch
* 54eb347a include/git: fetch submodules on one-tree projects
* f855611c include/git: only download submodules if possible
* 0c32c1d6 update/release .git/*: delete one more level up
* 0375cfaf update/release: don't hardcode project names
* d245e0b1 consistent naming for src/pico-serprog
* fac62a8c config/git: name files per download name
* 0e1602f5 do a nice thing
* 7b206008 Merge pull request 'fix_distro_dependencies - part 2' (#139) from andreamtp/lbmk:fix_distro_dependencies into master
|\
| * a16cd1a3 Added python-unversioned-command for Fedora38
| * 8a063f6b Fix Debian/Ubuntu dependencies
* | 6af65ad4 error handling code cleanup and fixes
* | 4e54a051 another code cleanup
* | 8d9aeef3 lbmk: use 2-level directory structure in script/
* | 0b98c9b0 minor code cleanup in shell scripts
* | 8b6e44a1 Merge pull request 'Fix F38/Ubuntu 20.04 dependencies' (#137) from andreamtp/lbmk:fix_distro_dependencies into master
|\|
| * 6758b5c8 Fix F38/Ubuntu 20.04 dependencies
* | 9fac3c12 Merge pull request 'Fix Void Dependencies for building Serprog' (#138) from neutrocyte/lbmk:fix_void_dependencies into master
|\ \
| |/
|/|
| * e63399cf Fixed Void Dependencies for building Serprog
|/
* 4cdf60e6 util/spkmodem-recv: detailed copyright history
* fc2cab31 update/release: fix missing variable definition
* c14461a5 delete include/vendor.sh and merge elsewhere
* d8c2c245 vendor.sh: move some functions to vendor/download
* 0f807762 update .gitignore for the dell-flash-unlock binary
* 34b8687e coreboot/fam15h: remove redundant patch
* 1a299f1b Merge pull request 'util/e6400-flash-unlock: Rename to dell-flash-unlock' (#135) from nic3-14159/lbmk:rename-e6400-flash-unlock into master
|\
| * 5d6946c4 util/e6400-flash-unlock: Rename to dell-flash-unlock
* | 8583a05d Merge pull request 'Update U-Boot to v2023.10 and use default coreboot tree for gru chromebooks' (#136) from alpernebbi/lbmk:uboot-v2023.10 into master
|\ \
| * | 4d9567a7 coreboot: gru: Use default coreboot tree
| * | 6e65595d u-boot: gru: Do not persist EFI variables
| * | 4e7e4761 u-boot: gru: Enable more EFI commands
| * | f08102a2 u-boot: gru: Enable more bootstd features
| * | fea0cec2 u-boot: gru: Do not reset on panic
| * | f9bad444 u-boot: gru: Enable poweroff command
| * | f7db91c8 u-boot: gru: Disable VIDEO_COPY
| * | 7afe2f39 u-boot: Set EFI variable buffer size to upstream value
| * | 46e01c0e u-boot: Avoid building U-Boot-only binman images
| * | 5b4ced33 u-boot: Add patch to avoid regulator errors
| * | f459e05e u-boot: Update to v2023.10
| * | b2d84213 update/project/trees: Add flags for more kconfig actions
| * | 8b411963 u-boot: qemu_arm64_12mb: Remove misleading rev field
| * | eb267733 build/fw/coreboot: Fix misuse of raw u-boot.bin as payload
|/ /
* | 65af756f x/xx: slightly more verbose error messages
* | 19f1e008 vendor/inject: only build nvmutil if required
* | 3f8636ff vendor/inject: simplified file handling
* | 7b741dd0 update/release: remove unused variables
* | e0feda63 update/release: fix/simplify mtime handling
* | ec0b38af update/release: nuke roms using the inject script
* | 2ebadb7f build/release: don't include tmp/ in src tarball
* | 27aaae59 update/release: also set timestamp on srcdir
* | ca78fc67 update/release: be more thorough updating times
* | 7cd84aec update/release: use getops OPTARG correctly
* | b5db0480 update/release: delete multi-tree upstream repos
* | 6846c9f7 update/release: if *GNU* tar, use --mtime
* | c401efdd build/release: support skipping rom builds
* | 268fd6ce update/release: make src tarball first, then roms
* | 653a8571 put space in the warning message about elf/
* | c44a38ae only build cbutils if required
|/
* 42068f7c coreboot/default bump: rev d862695f5f, 12 Oct 2023
* 09881212 use me_cleaner from coreboot instead of upstream
* 1f331642 nvmutil: simplify endianness handling
* 3162d60d nvmutil: don't reset errno before write
* f989360e nvmutil: reset errno on successful write
* 3ad171fd nvmutil: simplify prototype declarations
* 96fd88c5 build: fix bad command in help text
* 5b8b55f2 build/fw/coreboot: fix bad commands in help text
* 067a358d fix warning about coreboot elf/ vs bin/
* 13c58200 Merge pull request 'util/e6400-flash-unlock: Update to upstream version' (#134) from nic3-14159/lbmk:e6400-flash-unlock-updates into master
|\
| * 724cb39f util/e6400-flash-unlock: Update to upstream version
* | 67ffb513 build/fw/coreboot: warning about bin/ versus elf/
|/
* 634aac0b config/dependencies: fix unifont on arch/parabola
* 7e3a031a include/err.sh: don't run check_git
* b61e3feb config/dependencies/ubuntu: symlink to debian
* 4ea9b9fb config/dependencies: add popos config
* f8528d12 config/dependencies/debian: add autopoint
* 21db72b6 disable 32-bit memtest86plus, only build 64-bit
* d1ba94ea update/release/*: merge to update/project/release
* e7a77b50 build/fw/coreboot: reset grub background each time
* 92abbb25 update/release/roms: copy license files to archive
* 85bee1f8 bump grub revision
* d58bc5ff bump seabios revision
* 1e89264c update/project/*: merge to update/project/trees
* a413c01a update/project/trees: handle seen in fetch_config
* c8bace0d build/fw/grub: re-add end confirmation message
* ba324d8c build/coreboot/grub: move to build/fw/grub
* 4708da2c use quotes when checking empty strings in scripts
* 0fad3497 build/fw/coreboot: fix error "unexpected operator"
* ea27c928 update/project/build: move helpers to option.sh
* 0ed2ec29 build/coreboot/util: merge to update/project/build
* b6d9e6c1 build/fw/coreboot: don't support no-all all arg
* 0962600c build/fw/coreboot: correctly check built targets
* fa8e204f unified projectname/version/versiondate handling
* 24584296 put include/export.sh in build script
* 62cc895c rename blob/ to vendor/
* 3c7e37b1 update/blobs: correct utils paths check
* 5e81024e update/blobs: don't hardcode kbc1126 util check
* 9f8f230b update/blobs: don't needlessly re-build uefitool
* fe502da9 Rename blobs/ to blob/
* 4e39d5a5 put all src downloads under src/
* 965b6a7e rename build/firmware/ to build/fw/
* 5494ffb3 build/firmware/coreboot: confirm compiled roms
* ce10c1b3 build/firmware/coreboot: support "all" without all
* 2d483d2f move build/release/* to update/release
* 315d0c45 mv build/fw/serprog,build/boot/roms build/firmware
* 863081c3 remove build symlink, rename lbmk to build
* 2d16e1ee rename build/project/trees to update/project/build
* 1c2de7f9 unify build/grub/* to build/coreboot/grub
* 176722a8 unify handle/make/* into build/project/trees
* 9d419e77 handle/make/*: unified main() function
* 10684102 general code cleanup in shell scripts
* cad7648a build/boot/*: merge all logic into one script
* 923a96c1 check git/version: properly call err()
* 1223bfae check_git: call fail() first (fallback to err)
* 727dc7ff more verbosely print git config error
* fbd464b4 include/err.sh: checkgit,checkversion
* e638c3e4 update/project/trees: remove errant assignments
* 68e1787c update/project/trees: split up main()
* 5de8eda2 general code cleanup in shell scripts
* 334aa1f7 handle/make/config: fix formatting on variables
* 8097baa0 handle/make/file: check for all default makefiles
* 0db6c0a4 update/blobs/download: remove errant comment
* 3af63fb8 handle/make/file: exit 0 if no makefile
* ad74b4c2 handle/make/file: run extra arg before, not after
* 2e60e117 grub.cfg: disable the pager
* d9719cae handle/make/file: do multiple project arguments
* cb29c96c lbmk: simplify/correct exit commands / cleanup
* 9dce8236 update/project/trees: fix error handling on mkdir
* 0f86a393 update/project/trees: optimise error handling
* 67ac799d update/project/trees: simplified error handling
* d38b958d include/err x_(): more verbose error message
* 8886f995 include/err: remove unused variable
* cd2caecb update/project/trees: general code cleanup
* bcbd3734 update/project/trees: rm yet another rm line
* 0a63dce3 update/project/trees: remove one more rm line
* 91c0f942 update/project/trees: remove redundant rm command
* 7bead4f5 update/project/trees: remove unnecessary linebreak
* 1dd97470 update/project/trees: rm "seen" in the right place
* a3b3196d build/grub/payload: remove unnecessary linebreaks
* 3fcad603 build/coreboot/utils: remove unnecessary check
* 0a711ebc build/coreboot/utils: simplify argument handling
* 7ce3f93e build/boot/*: unify more logic in main()
* 7b02bb9a do not handle errors on mktemp in shell scripts
* 8c03b886 Greatly simplify error handling in shell scripts
* 5f914a4d build/boot/roms: optimise main() for code size
* 92c6da7b build/boot/roms_helper: shorten variable names
* 2a6fcf70 build/boot/roms: dont do init/displaymode argument
* 42d4fa9b include/boot.sh: simplify variable initialisation
* 9bc9dddf build/boot/roms_helper: simplify rom file handling
* c477599c build/boot/roms_helper: general code cleanup
* 26fc3f13 general code formatting cleanup in shell scripts
* 0a0defd3 simplify initialising variables in shell scripts
* 49b266eb build/boot/roms: only do 1 custom kbd/payload/mode
* d268f5eb build/boot/roms: move usage() to include/boot.sh
* 7922b6e0 build/boot/*: unified main() function
* f3c4f208 build/boot/roms: split up handle_targets()
* 4afa0aaa build/boot/roms: check all targets before building
* 6125d341 build/boot/roms: merge handle_targets/build_target
* 13f5a432 build/boot/roms: only run confirm_targets once
* 5462bf1c build/boot/roms: rename buildrom to build_target
* fc097b3e build/boot/roms: split up main()
* 895073d7 build/boot/roms: simplify buildrom() handling
* df7305a5 build/boot/roms: support "all" if argument passed
* b3e69cd9 build/boot/roms: move help() to bottom of file
* 385eb90c update/*/*: unified scanning of revisions/sources
* 9f5a5450 blobs/download: move helpers to include/blobutil
* 416704fb include/blobutil: try curl first, then wget
* 6519cea9 include/blobutil: simplify check_defconfig()
* ac05e5ff blobs/download: do IntelME extract in one function
* 9b94df5d blobs/download: do final check of _dest in fetch()
* 9a7bf4af blobs/download: don't pass dl_path as argument
* 2b7ae8e2 blob scripts: unified handling of blob destination
* 8ea62a16 remove unused variables in blob scripts
* 32da4e31 merge include/fetch.sh, blobutil.sh, defconfig.sh
* 710171f9 update/blobs/*: simplify mrc.bin handling
* 0bb3c596 update/blobs/*: unified download/checksum logic
* 5d934be7 blobs/download: remove unnecessary linebreaks
* 3256ef3e blobs/download: remove unnecessary messages
* 178b888a include/blobutil: properly set global variables
* e9e1a3b4 blobs/download: simplify downloading of files
* 781d0a80 blobs/download: remove unnecessary error pipes
* 9aef57df blobs/download: unified archive extraction
* 74c48a88 move build/command/options to include/option.sh
* a00b4337 build/release/roms: simplify strip_rom_image()
* 3b9442f7 blobs/download: unified blobdir handling
* 373c84e4 blobs/download: unified archive extraction
* 1e92abb1 blobs/download: remove errant debug line
* e73306ba remove script/update/blobs/extract
* 16235cb6 blobs/download: simplify fetch_update()
* d023327f blobs/download: greatly simplify sources handling
* 65a32698 include/blobutil: simplify setting empty strings
* 6b17cda1 blobs/download: simplify defconfig handling
* b5628131 handle/make/config: check project in main()
* f052f61f handle/make/config: split up main()
* 67f4919f simplify getopts loops in shell scripts
* 36b7f01a only update git submodules in project/trees
* 81d073d5 update/project/*: unified git reset handling
* eae173ec split up grub patches into subdirectories
* a823bab3 include/git: support applying patch subdirectories
* 3738ec90 update/project/*: unified patch handling
* cd3225d8 update/project/trees: remove extra.sh handling
* 42c9d7d2 build/grub/*: move common strings to variables
* e94ba1f7 build/grub/payload: split up main()
* b727f966 util/: use SPDX license and copyright headers
* 20862019 Update email address for Leah Rowe copyrights
* cc164209 Use SPDX license headers on all scripts
* a7b767a4 update/repos: concatenate multiple revision files
* 7966f911 handle/make/config: run fail() on error, not err()
* 2d0e978c update grub revision
* 905f3d8e util/nvmutil: remove xorswap() macro
* 231015ef util/nvmutil: make setWord a macro
* d9bed115 util/nvmutil: further optimise swap command
* 5e801360 util/nvmutil: use correct comparisons on pointers
* 137a548b util/nvmutil: optimise swap command
* 4d448201 util/nvmutil: don't use err_if on argc check
* 0897a0be util/nvmutil: always print filename in err_if
* 9a92524a util/nvmutil: remove SIZE_8KB define
* 5a129cea util/nvmutil: remove xpread/xpwrite macros
* ac0e4999 util/nvmutil: remove unnecessary xclose macro
* 83e6cfb2 util/nvmutil: simplify pledge and unveil handling
* 7bb92acd Merge pull request 'merge serprog scripts' (#131) from Riku_V/lbmk:master into master
|\
| * 3c30e1e3 merge serprog scripts
|/
* f8704c0a lbmk: more verbose error messages
* a1db59a5 lbmk: reduce indentation in execute_command()
* a9ea277e lbmk: fail if ./build command options fails
* f1f5b91a lbmk: simplify execute_command()
* 662b9266 lbmk: remove "./buildpath mode all"
* 4c734308 lbmk: break up main()
* 5f197023 lbmk: always use lbmk_exit for exits
* 3400e5a1 rel/src: fix multi-line command
* 4df3d09b remove ich9utils entries from .gitignore
* 20bf3a19 Merge pull request 'make clean stm32-vserprog for release' (#130) from Riku_V/lbmk:makeclean into master
|\
| * c3ac62b1 serprog: list available boards
| * 24185bca fix typo serprog -> vserprog
| * ccb36aa6 make libopencm3 correctly
| * 5737abf0 make clean libopencm3
| * 0bed0c35 Download libopencm3 before building
| * 3d77b8a0 download and copy serprog related src
| * 7dc86325 clean up pico-serprog for release
| * 34d3629e make clean stm32-vserprog for release
* | c400916e coreboot/hp8200sff_4mb: fix bad ifd path in config
|/
* 087f0e06 make lbmk help text actually vaguely helpful
* 093d40ee build/release/src: be more thorough deleting .git
* 630a6546 build/release/src: delete elf/ in srcdir
* 0543350d handle/make/file: run make-clean first
* 12f9afe6 build/release/src: remove cbutils/ in srcdir
* fe00ab4e build/release/src: remove errant code
* be4ed540 handle/make/config: distclean once per tree
* f227cc08 handle/make/config: fix distclean/crossgcc-clean
* 669c9770 handle/make/config: fix whitespace and 80-line bug
* d28ad6aa build/release/roms: use -T0 on serprog tarballs
* 308c21dd build/boot/roms stragglers: properly handle errors
* c16b28ef build/release/src: re-create symlinks, don't copy
* 32dcf9e5 coreboot/qemu_x86_12mb: re-add this mainboard
* 5aef8156 scripts: use printf, not echo, where appropriate
* 76e12cd4 update/blobs printf statements: use double quotes
* 84bf47b5 scripts: better handling of printf: stdout/stderr
* b78009e2 checkgit: properly print output to stderr
* f45f5e62 update/project/*: remove redundant checks
* 3e76e70d blobs/download: don't use the -B option in make
* 877c691e build/release/roms: remove errant line break
* f03efbc2 blobs/inject: add error condition on rm command
* 20be007f blobs/inject: fix checksum validation if no-ucode
* f989d5b4 blobs/sources: fix backup links on some files
* 878550d5 use sha512sum to check downloads, not sha1sum
* 022e0200 Merge pull request 'Add stm32-vserprog' (#129) from Riku_V/lbmk:stm32 into master
|\
| * bed444ff Add stm32-vserprog
* | e9e4ada5 build/boot/rom: only insert scan.cfg if needed
* | 0e3f3efc build/boot/roms: delete tmpcfg when done
* | a69e8548 set grub.cfg timeout to 5s (10 on some boards)
* | 4a459b02 Merge pull request 'pico-serprog improvements' (#128) from Riku_V/lbmk:master into master
|\|
| * 7b6fb958 Build pico-serprog binary release archive
| * c292e01b Build for all pico board, not just the "original"
| * 1bde6bb3 Support multiple dependencies per project
| * 4d3b16da Cleaner parent directory creation
|/
* 7e8465be grub: re-add module: play
* e3b9dfc9 util/nvmutil: put code all in nvmutil.c
* 8fc5f6ed update/blobs/inject: use tmp/romdir, not TMPDIR
* da991262 build/release/roms: use tmp/romdir, not TMPDIR
* 15081ed9 grub: make backgrounds configurable in target.cfg
* 0d315c3a curl/wget downloads: set re-try count to 3
* bdf171e3 don't use /tmp/ for git clones. use tmp/ instead.
* 196f293a build/release/roms: fix ucode handling
* c0c7f3ae build/release/roms: simplify defcongic handling
* a56cad71 update/blobs: unify global variables
* 2cbc7eea update/blobs/*: unify checking of defconfig files
* 52677309 update/blobs/extract: replace errant target code
* ea7fae97 build/boot/roms: don't create empty bin/ directory
* c62a4239 update/blobs/inject: remove errant target handling
* 950166da update/blobs/download: remove errant code
* 0668d234 add checkversion to build/release/src
* c92a596c grub: remove xnu module
* e659ddd8 grub: remove legacy file system modules
* cf535785 re-add grub modules cat, eval and pbkdf2
* 33e6088a move script/misc/versioncheck to main directory
* 2c769dc1 move me7_update_parser.py to util/
* da3c9bb3 merge config/ and resources/
* a0501050 blobs/download: don't handle ifd/gbe files
* 03788d14 move ifd/gbe configs into config/ifd/
* 6ddb0e09 run make oldconfig on coreboot/default mainboards
* 19efdf9e ich9m mainboards: use pre-assembled ifd/gbe files
* af8d8cda add ich9m ifd/gbe files
* d554efae build/release/src: copy e6430 ifd/gbe
* 09aae7be build/rpi-pico-serprog: better error handling
* 1dc54608 fix rpi-pico builds when running it twice
* c63052cf fix memtest86plus download/build
* fb4e6834 Merge pull request 'Add Dell Latitude E6430' (#124) from nic3-14159/lbmk:e6430 into master
|\
| * ebc04e52 Add Dell Latitude E6430
* | 71d361aa Merge pull request 'Less cat abuse' (#123) from Riku_V/lbmk:cat into master
|\ \
| * | ef3fb05d Less cat abuse
* | | eebf7133 switch repo links for pico-serprog
| |/
|/|
* | 9ef8a7ea Merge pull request 'Automate pico-serprog builds' (#122) from Riku_V/lbmk:mkserprog into master
|\|
| * e369e8fb automate rpi-pico serprog builds
|/
* 92b4db69 build/release/src: only clean kbc1126 if it exists
* 7c6b35cf unify build/clean scripts: use handle/make instead
* cec37747 build/release/*: use -T0 in xz, for multithreading
* b4b63adb don't support ucode removal on untested targets
* b30c7e33 coreboot/e6400: support nvidia models
* 436b2ccb handle/make/config -m/-u: actually copy configs
* 3c7b09ac handle/make/config: properly handle cbutils
* a3bc7ccd handle/make/file: fix uefitool builds
* 4885c796 handle TMPDIR from include/export.sh
* 56f16bc8 don't do cmake on uefitool if the Makefile exists
* 98d1ea5a build/release/src: bugfix: actually copy cb/ub/sb
* 755f925a build/release/src: copy handle symlink
* 3ad29d2d build/release/src: remove Makefile reference
* d69c231e build/release/src: fix bad variable reference
* 38440153 update build/release/src based on lbmk changes
* 0e782e7e update the fetch scripts themselves
* 98f30b6d build/coreboot/utils: exit 1 if target.cfg missing
* b9662fbe handle project downloads in main lbmk script
* 12b33eb8 lbmk script: always clean up /tmp files
* 225e2609 only remove microcode in build/release/roms
* bf774acf move build/boot/rom moverom to handle/make/config
* e5546128 build/release/roms: fix syntax error
* fbda0f04 re-add /dev/null redirect on . ${1}
* b2bad5a0 build/release/src: copy the include/ directory
* eb54e427 grub: all one grub.elf containing keymaps and cfg
* c6fd4d2a lbmk: run ./build dependencies *before* root check
* 6722624d build/boot/roms: fix bad variable assignment
* 55be6dda dependencies/ubuntu2004: update based on debian
* 0052f9d0 fix: don't require git config for dependencies
* 6dbddf85 build/boot/roms: simplify ich9m ifd handling
* f5787c9e build/boot/roms ich9m ifd: use fast dd command
* d9292cec build/boot/roms: use the new coding style
* 4623f3f2 Remove superfluous GRUB modules (save CBFS space)
* 623c3389 fix typo in error message ("as not permitted")
* 4a280c62 .gitcheck: re-write entirely. force global config.
* 355eb765 move resources/scripts/ to script/
* eed34d3e enable memtest86plus on various boards
* bc0fb51d x86 desktops: only enable seabios_withgrub
* 9457d6be unified list command for all scripts
* 93d2dcad handle/make/config: add missing pipes for err
* 0e6851c8 delete the Makefile
* ebbefa60 handle/config/file: rename to handle/make/config
* df6db1c6 handle/config: fix errant "handle src for" call
* 6874bc39 "handle src for" - change to handle make file
* 798ce03a handle/config: add missing error handle
* 29a8193e build/src/for: rename to handle/make/file
* 27c67295 handle/config/file: unified distclean handling
* 197464bc build/src/for: use -j for multithreaded builds
* 95f290d9 build/release/src: update based on recent changes
* 5a47c01b scripts: put quotes around file/directory names
* 1c8401be much, much stricter, more verbose error handling
* 50c395df .gitcheck: continue if no .git (don't break)
* be7a5b0c .gitcheck: must stricter error handling
* 3a5ba57f .gitcheck: only redirect stdout to /dev/null
* 8f4f0e00 use the new coding style in scripts
* 4c6c7d10 scripts: never exit 1, always call err instead
* 52f3fd35 blobs/download: copy dl_path, don't move it
* 57adbc6e unify err functions across scripts
* b3fbcdf6 .gitignore: ignore *all* seen files
* 24f09335 Merge pull request 'hp8300usdt: enable mSATA' (#118) from Riku_V/lbmk:master into master
|\
| * df1e8913 hp8300usdt: enable mSATA
* | dfb93166 Merge pull request 'memtest86+ v6.20' (#116) from Riku_V/lbmk:memtest into master
|\|
| * fa926632 memtest86+ v6.20
|/
* 1bd84209 Merge pull request 'osbmk->lbmk' (#117) from Riku_V/lbmk:osbmk-lbmk into master
|\
| * 7be203dd osbmk->lbmk
* | 04ee2672 also clean up the main scripts
* | 62f23123 general code cleanup on lbmk shell scripts
|/
* 7be47065 unify build/defconfig and modify/defconfig
* 0faf2a0c main lbmk script: exit non-zero if argc is wrong
* 6e92d9a3 fix "./build help"
* 9031bb7b unify dependencies scripts
* 023d6b69 unify build/clean into ./build release src
* f893a29b unify most module build scripts
* c83d1a8d unify grub scripts under one directory
* 438bf2c9 grub/modules.list: add argon2
* fd602532 grub: import phc argon2 implementation (for luks2)
* 2c0c521e bump grub revision a bit
* e076d893 unify update/modify coreboot/u-boot/seabios script
* e25984d7 remove board: qemu_x86_12mb (not usable for now)
* e5b898f6 consolidate u-boot/seabios/coreboot build scripts
* 673b144a coreboot/fam15h: fix for gcc/gnat building
* 63b0e99f don't call blobutil directly from lbmk
* 08486227 remove download scripts, consolidate into script
* 8459e33b improve user feedback in blobutil
* 59dba6cf merge coreboot/u-boot download logic to one script
* 2453c303 gitclone: always clean up /tmp
* adeb065c fix permissions on arch dependencies script
* 6075fed8 NEW BOARD: HP EliteBook 8470p (Intel GPU)
* f9afeb6f NEW BOARD: Dell Precision T1650
* f8f77cb2 NEW BOARD: HP EliteBook 2170p
* c5c89467 Merge pull request 'Update 'README.md'' (#89) from ewpr5kwu/lbmk:master into master
|\
| * 5204f0a9 Update 'README.md'
* cb8bf380 bump seabios revision to 30 May 2023
* 27ee975e bump grub revision to 2.12-rc1
* 705149a3 coreboot/default: bump revision to 2 August 2023
* 22ee7f74 blobs/download: save ME file to correct location
* cdd83ab1 blobs/download: try backup if bad hash on main
* f18b1859 blobs/download: support more formats on ME extract
* f0efaf79 add unar to dependencies scripts
* e8ba0f87 blobs/download: declare full user agent
* 4875eef1 blobs/download: properly handle backup/main url
* cca93ca3 blobs/download: don't download backup on main
* 3aeefaa7 blobs/download: set common user agent string
* 5e83d2bc blobs/download: simplify for loop
* 8f1d3ad1 scripts: fix indentation in switch/case blocks
* 748e0972 blobutil/ec: abort if kbc1126 ec extraction fails
* e594ac16 coreboot/fam15h: remove unused files
* 44bd077a Revert "build/boot/roms mkUBootRoms: initialise variables"
* 7c90a407 build/boot/roms mkUBootRoms: initialise variables
* d918139f coreboot/fam15h: re-enable microcode updates
* 8c777428 board/qemu_x86: don't enable u-boot
* fb44c349 coreboot/haswell: fix acpica downloads
* af084014 coreboot: re-add asus kgpe-d16/kcma-d8/kfsn4-dre
* e6002b91 coreboot/cros: fix acpica downloads
* f34e07ae build/boot/roms: fix coreboot-version in releases
This is 445 changes in total, since Libreboot 20230625.