diff --git a/site/news/MANIFEST b/site/news/MANIFEST index b4f25424dc9ac4519f71c3f9a5af843d20c150c0..1ae4a15fee4ec03a5dfca3e0a28b2bbbb96d44e2 100644 --- a/site/news/MANIFEST +++ b/site/news/MANIFEST @@ -1,3 +1,4 @@ +audit3.md audit2.md argon2.md hp8470p_and_dell_t1650.md diff --git a/site/news/audit3.md b/site/news/audit3.md new file mode 100644 index 0000000000000000000000000000000000000000..8f50a81853f49e8e9748c33197dc64740e718c2b --- /dev/null +++ b/site/news/audit3.md @@ -0,0 +1,825 @@ +% Libreboot Build System Audit 3 +% Leah Rowe +% 20 October 2023 + +Introduction +============ + +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 the announcement for that release +is: [Libreboot 20231020 release announcement](libreboot20231020.md) + +A lot of work has gone into Libreboot since [Libreboot Build System +Audit 2](audit2.md), the main focus of which has been yet another +audit; audit2 and the [audit before that](audit.md) 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. + +Massive code size reduction +--------------------------- + +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](../docs/maintain/). + +*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. + +Summarised changes since audit2 +------------------------------- + +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): + +* Better integrity checking when downloading vendor files +* Safety check: don't allow running as root when not needed, on most commands. +* Multi-threading now used more universally, when compiling source code, and + when creating tar archives from the Libreboot build system. +* Safer GRUB configuration file handling; less likely to brick during + configuration changes that are subject to re-flashing. +* *Much* stricter, more verbose error handling in general, but some overly + verbose or redundant error handling was deferred to using `x_` instead (more + on this later). +* Vastly reduced number of modules in GRUB, keeping only what is required. + Many redundant modules have been removed, resulting in lower payload size + and higher boot speed when using the GRUB payload. +* Much safer handling of git name/email credentials, at build time. +* Greatly improved speed during build, on certain parts of the build process. +* Improved `/tmp` handling; tmpfiles are now robustly cleaned, on exit from lbmk. +* All main project revisions have been updated to recent code; coreboot, SeaBIOS, + U-Boot and GRUB. This, in addition to several other repositories. +* GitHub is no longer used on main Git repository links, instead only as backup +* Backup repositories now defined, for all main repos under `config/git/` +* GRUB LUKS2 support now available, with argon2 key derivation; previously, only + PBKDF2 worked so most LUKS2 setups were unbootable in Libreboot. This is fixed. +* 12 shell scripts, not 20, in lbmk. This, in addition to sloccount reduction. + NO FUCTIONALITY HAS BEEN LOST! +* Most logic has been greatly unified, into single scripts that perform the + same style of task, rather than the same style of task being handled by + multiple scripts. This is done without creating *spaghetti*. +* Many bugs fixed, and sloccount reduced. Too many to summarise, so see below. +* Dependencies configs (package lists for distros) have been updated, and new + distros are supported e.g. popos and linuxmint. +* Generally improved help text, in lbmk commands that provide help text. +* The main Makefile has been removed, because it was redundant. + +Here's a more full list of changes, expanding on the above; some entries above +are also repeated below but in more detail: + +* Scrubbing of vendor files *now* handled by the inject script, rather than + the release script. This enables more robust handling of configs pertaining + to vendor files, that tell lbmk where the files are and how to insert them; it + therefore follows that this same script should be used to delete them. +* Use `--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. +* Always re-inialitise `.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. +* More robust makefile handling in source trees; if one doesn't exist, error + out but also check other makefile name combinations, and only error out if + the command was to actually build. +* ROMs build script: support the "all" argument, even when getopt options are + used e.g. `-k` +* Disabled the pager in `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. +* U-Boot can now be compiled standalone, without using the ROMs build script, + because crossgcc handling is provided for U-Boot now in addition to coreboot. +* Unified handling of git/vendor config files, containing URLs, revisions, + checksums and so on. This is handled by a single function + under `include/option.sh` +* All helper scripts are now under `include/`, and main scripts in `script/`, + called by the main `build` script +* Intel ME extraction is now provided in one function, instead of two, when + downloading vendor files per mainboard, before running it + through `me_cleaner` +* Unified checking of the destination file, when downloading vendor updates. + This results in more reliable checking of whether a vendor file has already + been downloaded or not, where it is only handled if missing. +* Generally purge unused variables in shell scripts +* Simplified initialisation of variables in shell scripts, using the `setvars` + function defined under `include/err.sh` +* Vendor scripts: archive extraction is now unified, the same method used for + each archive. This enables more robust checking of hashes and so on. +* Support patch subdirectories, when applying patches. This is done recursively, + making it possible to split up patch files into smaller sets inside sub + directories, per each source tree (or target of each source tree, where a + project is multi-tree within lbmk) +* SPDX license headers now used, almost universally, in all parts of lbmk. +* Files such as those under `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. +* General code cleanup on `util/nvmutil` +* Git histories are more thoroughly deleted, in third party source trees during + release time. +* Symlinks in release archives are no longer hard copies; the symlinks are + re-created by the release script, because it clones the current lbmk work + directory via Git (local git clone), rather than just using `cp` to copy links. +* More deeply integrated the Intel MRC download script (from coreboot) into + Libreboot's vendor scripts, removing its download logic and re-using that + from Libreboot's scripts instead; now, the MRC script only contains extraction + logic, and it is an *include* file, rather than a standalone script. +* Properly output to stderr, on printf commands in scripts where it is either + a warning prior to calling `err`, or just something that belongs on the error + output (instead of standard output). +* Don't use the `-B` option in make commands. +* Where no-microcode ROM images are provided, ensure that the ROM hashes still + match when running the vendor inject script. This is only useful on the + Dell Latitude E6400, which is otherwise FSDG-compatible but (in Libreboot) + comes with or without microcode updates, and with or without the Nvidia VGA + ROM (handled by vendor inject/download scripts) for dGPU variants. Verification + previously failed, under certain conditions, when inserting that VGA ROM. +* SECURITY: Use sha512sum (not sha1sum) when verifying certain downloads. This + reduces the chance for collisions, during checksum verification. +* Set GRUB timout to 5s by default, but allow override and set to 10s or 15s + on some mainboards. +* Vendor scripts: don't use `/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`). +* Support both curl and wget, where files are downloaded outside of Git; defer + to Wget when Curl fails, and try each program three times before failing. This + results in more resilient downloading, on wobbly internet connections. +* Don't clone Git repositories into `/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). +* Removed unused `target.cfg` handling in vendor scripts, because they use + the concatenated config format instead (they always have). +* move `me7_updater_parser.py` to `util/` (not under `script/`) +* The directory containing vendor files no longer exists in lbmk, because it + is instead created when needed; the ifd/gbe files were moved to `config/ifd` + so the vendorfile directory became redundant. +* Coreboot builds: automatically run make-oldconfig, to mitigate use of raw + coreboot config where a revision was updated but the config was untouched. + This may still result in a confirmation dialog, and it's still recommended + that the configs be updated per revision (or switch them to defconfigs). +* Vastly simplified directory structure; `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`. +* memtest86plus: only build it on 64-bit hosts, for now (32-bit building is + broken on a lot of distros nowadays, and lbmk doesn't properly handle cross + compilation except on coreboot or U-Boot) +* (courtesy of Riku Viitanen) don't use cat on loops that handle lines of text. + Instead, use the `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. +* Don't support removal of microcode (during release time) on untested targets. + Set `microcode_required="y"` on most boards, but leave it set to `"n"` on + platfroms such as GM45 (ThinkPad X200/T400, Dell E6400, etc); anything FSDG + compatible, in other words. +* Improved Dell Latitude E6400 support; the same image now provides iGPU and + dGPU support, since it's SeaBIOS-only anyway, so a VGA ROM is inserted into + the same ROM that also enables libgfxinit, enabling the Intel or Nvidia GPU + to be used (if the VGA ROM is missing, only the Intel GPU will work). +* *ALL* projects now have submodules downloaded at build time, not just multi + tree projects such as coreboot. +* Improved cbutils handling; it's now even less likely to needlessly re-build + if it was already built. +* The release build script no longer archives what was already built, but + instead builds from scratch, creating an archive from source downloads + first before building the ROM archives. This saves time because it enables + a single build test per release, whereas at was previously necessary to test + the Git repository and then the release archive. Testing both is still desired, + but this behaviour also means that whatever is built at release time is + guaranteed to be the same as what the user would build (from archives). +* Improved handling of `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. +* Only remove microcode (where that behaviour is enabled per board) in release + ROMs, but not during build time. This results in reduced disk usage during + development, but release archives still contain the no-microcode option if + you want to use that; manual removal is also still possible, during development. +* GRUB payload: all ROM images now contain the same ELF, with all keymaps + inserted. This speeds up the build process, and enables easier configuration + when changing the keyboard layout because less re-flashing is needed. +* Simplified IFD handling on ICH9M platforms (e.g. X200/T400 thinkpads); the + ich9gen utility wasn't needed anymore so ich9utils has been removed, and now + the IFD/GbE files are included pre-assembled (generated by ich9gen). Ich9gen + can still be used, or you can re-generate with coreboot's bincfg; the ifdtool + util can be used to edit IFD and nvmutil (part of Libreboot) can change MAC + addresses. The ich9utils code was always redundant for the last few years, + especially since 2022 when nvmutil was first written. +* Running as root is now forbidden, for most commands; lbmk will exit with + non-zero status if you try. The `./build dependencies x` commands still work + as root (they're the only commands available as root). +* Enabled memtest86plus on more boards, where it wasn't previously enabled. +* Only enable SeaBIOS as first payload on desktops, but still enable GRUB as + second payload where GRUB is known to work (on each given host). The text + mode and coreboot framebuffer modes are provided in each case, where feasible. +* The `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/`. +* The `-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. +* Universally use `-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) +* File names as arguments now universally have quotes wrapped around them, and + similar auditing has been done to all variables used as arguments everywhere + in lbmk. There were cases where multiple arguments were wrongly quoted then + treated as a single argument, and vice versa. This is now fixed. +* Re-wrote `.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`. +* The new BSD-like coding style is now used on *all* shell scripts in lbmk. A + few scripts still used the old lbmk coding style, as of audit 2. +* Scripts no longer directly exit with non-zero status, under fault conditions; + instead, `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. +* *Copy* `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. +* BSD-style error handling implemented, with an `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. +* Memtest *6.2* now used (instead of *5.x* releases). This is essentially a + re-write, and it works on the coreboot framebuffer, whereas previous revisions + only worked on text mode setups. +* NO MAKEFILE. The Makefile in lbmk has been removed. It was never meaningfully + used because all it did was run lbmk commands, without implementing any logic + itself. A Makefile may be added again in the future, but with a view to + installing *just the build system* onto the host system, to then build ROM + images under any number of directories. Lbmk's design is strictly no-Makefile, + but it uses Makefiles provided by third party source trees when building them. +* Safer GRUB configuration file handling between GRUB memdisk and coreboot CBFS; + it is no longer possible to boot without a GRUB config, because the one in + GRUB memdisk is provided as a failsafe, overridden by *inserting* one in CBFS, + but there is no config in CBFS by default anymore. +* VASTLY more efficient build process; all coreboot ROMs without payload are + now cached under `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. +* VASTLY reduced GRUB payload size; modules that aren't needed have been removed + resulting in much smaller GRUB payloads, that also boot faster. +* ALL defconfig creation, updating and modification are handled by the same + script that *also* handles compiling, as mentioned in the bullet-point below. +* ALL main source trees are now compiled, downloaded, configured and cleaned + using the same script. The *download* (Git) logic is a separate file + under `include/` and its functions are called by the main build script, which + provides a stub for this. +* Scripts are no longer executed directly, ever, except the main script. All + scripts are otherwise executed from `script/`, inheriting the `TMPDIR` + variable set (and exported) by lbmk. +* Generally improved user feedback in scripts, especially the vendor scripts. +* Coreboot, U-Boot and SeaBIOS are now downloaded, configured and compiled using + the exact same script. Although these codebases differ wildly, their build + systems use the same design, and they are compatible from a user-interface + perspective. +* Vastly improved `/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. +* Improved handling of vendor file hashes; previously, the backup would only + be tried if the first one failed to download, but if the first file succeeded + and yet had a bad hash, the backup would not be tried. Now the backup is tried + when either the first download fails OR it has a bad hash, making downloads + of vendor files more resilient to network failure. +* When extracting ME files from vendors, more types of archives are supported + for decompression at build time. +* Fixed bug where vendor files were always being downloaded from backup URLs + at build time. +* Spoof the user agent string mimicking that of Tor Browser, when downloading + vendor files at build time. This circumvents restrictions based on user agent + string, when lbmk interacts with certain HTTP servers. +* General simplification of coding style on all shell scripts. +* Abort (with non-zero exit) if KBC1126 EC firmware fails to download at build + time. +* Fixed some variable initialisations in the coreboot ROM image build script +* Don't enable u-boot on QEMU x86 images (due to buggy builds, untested) +* Haswell (libre MRC) coreboot tree: fixed acpica downloads, which no longer + work on the upstream URL. Old acpica binaries now hosted on Libreboot rsync. +* Fixed coreboot-version file inserted into coreboot trees, when compiled + on Libreboot release archives. + +FULL list of changes (from lbmk git log) +--------------------------------------- + +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 flashrom revision +* af1c1e10 add backup git repo for flashrom +* 18364822 Revert "config/git: don't download flashrom" +* ac442808 config/git: add more backup repos +* 75980052 git/config: don't use github on main repos +* bf4ea810 config/git: don't download flashrom +* 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.