summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-08-28lbmk: run ./build dependencies *before* root checkLeah Rowe
After that, do not allow anything to run if the user is root. This logic flow is more robust, and reduces the chance of bugs in the future. We must not permit the user to run lbmk as root. Running it as root *is* possible, by just removing the check, and wily enough users will do that, but this behaviour in lbmk is good practise because it prevents accidentally running as root. If the user went into root just for installing dependencies, they might accidentally forget to switch back. This is a safeguard against such folly. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28build/boot/roms: fix bad variable assignmentLeah Rowe
this was an oversight, in a previous commit. there was a space, between variable name and the equals sign, and then another space, so it was trying to *execute* the rom Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28dependencies/ubuntu2004: update based on debianLeah Rowe
ttf-unifont instead of fonts-unifont Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28fix: don't require git config for dependenciesLeah Rowe
this was an oversight on my part. the script cannot be run as root, except to install distro dependencies e.g.: as root: ./build dependencies debian however, ./checkgit was being run *before* checking that, making it required to set git config as root. this patch fixes that bug. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28build/boot/roms: simplify ich9m ifd handlingLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28build/boot/roms ich9m ifd: use fast dd commandLeah Rowe
bs=block size and count=1, rather than bs=1 and count=block size Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28build/boot/roms: use the new coding styleLeah Rowe
lbmk's new style is inspired by the bsd coding styles: top-down logic, main simplified to a skeleton showing overall program structure, variables well-defined, rigorous (yet deceptively simple) error checking. this was attempted before, but caused problems; coreboot wasn't being cleaned properly, and rather than audit it, i simply reverted this back to the old style. this is actually attempt number 5, because i made 3 more attempts between then and this one. i've build-tested this using "./build boot roms all" (which is what b0rked on the first attempt, months ago). it should be stable(tm). the code is much nicer to read / work on now. this is the beating heart of lbmk. get this script wrong, and you break all of libreboot. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28Remove superfluous GRUB modules (save CBFS space)Leah Rowe
With this change, about 54KB of compressed space is saved inside of CBFS, on setups that use the GRUB payload. The uncompressed saving is about 720KB, but payloads are compressed inside each coreboot image, so the compressed saving is much smaller. That 54KB saving means a lot, especially on small (1MB or smaller) flash sizes. The following modules were removed: adler32, afsplitter, aout, archelp, backtrace, blocklist, bswap_test, cat, cmdline_cat_test, cmosdump, cmostest, cmp, cmp_test, cpuid, cs5536, ctz_test, date, datehook, datetime, disk, diskfilter, div, div_test, dm_nv, efiemu, eval, exfctest, extcmd, file, fshelp, functional_test, gdb, gettext, gptsync, hashsum, hdparm, hello, hfspluscomp, http, json, json, ldm, loadenv, macbless, macho, mda_text, morse, mpi, msdospart, mul_test, net, ntfscomp, offsetio, part_acorn, part_amiga, part_apple, part_dvh, part_plan, part_sun, part_sunpc, parttool, pbkdf2, pbkdf2_test, pci, play, priority_queue, probe, progress, random, rdmsr, read, relocator, setjmp, setjmp_test, shift_test, signature_test, sleep, sleep_test, smbios, strtoull_test, terminal, terminfo, test_blockarg, testload, testspeed, tftp, tga, time, tr, trig, usbtest, video_bochs, video_cirrus, videoinfo, videotest, videotest_checksum, wrmsr, xnu_uuid, xnu_uuid_test These were retained, but moved to modules instead of install modules: geli, udf, ufs1, ufs1_be, ufs2 Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27fix typo in error message ("as not permitted")Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27.gitcheck: re-write entirely. force global config.Leah Rowe
the way the old script worked was extremely hacky it's cleaner just to make the user configure git i haven't used anything from the old .gitcheck script, which is now deleted. i completely re-wrote this, in a much simpler way. this is less maintenance now, when things change in the upstream projects. coreboot makes heavy use of git within its build system Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27move resources/scripts/ to script/Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27enable memtest86plus on various boardsLeah Rowe
d510mo, g43t-am3 and ga-g41m-es2l did not have the memtest86+ payload enabled enable it! Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27x86 desktops: only enable seabios_withgrubLeah Rowe
and only where grub was already enabled; on boards that did not enable grub, grub is still disabled on desktops, it's possible that the user may insert a graphics card. if their first payload was grub, it won't work because lbmk doesn't configure coreboot itself to execute vga roms at present i found when testing t1650 (dell) that if a vgarom is loaded from seabios (from a graphics card), the grub payload still works; if booting in corebootfb mode, text mode is still used when booting with the card to decrease the probability of bricks with any given set of users, make seabios the only payload that starts first, but make grub available in the esc menu on seabios it's possible to add a bootorder file and disable the seabios menu, if you only want a grub payload accessible Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27unified list command for all scriptsLeah Rowe
e.g. ./build boot roms list ./update blobs inject listboards ./build boot list ./build clean list also this is now possible: ./build list or maybe ./update list ^ would list directories in resources/scripts/build and resources/scripts/update respectively this script is added: resources/scripts/build/command/options call it like so, e.g. ./build command options resources/coreboot this script is now used, for list functions in other scripts. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27handle/make/config: add missing pipes for errLeah Rowe
i forgot to add these! without them, the script will always exit with an error Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27delete the MakefileLeah Rowe
we don't use it in lbmk. it's there mostly because it was technically feasible, and it still is however, i've been doing massive re-factoring of lbmk and the makefile and i just don't feel like constantly patching up the makefile if someone wants to re-add it, that's fine. but i don't see the point in maintaining something that we don't need. the makefile is not needed. all it did was call lbmk directly. the makefile had no logic itself. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27handle/config/file: rename to handle/make/configLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27handle/config: fix errant "handle src for" callLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27"handle src for" - change to handle make fileLeah Rowe
an oversight, in a previous edit Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27handle/config: add missing error handleLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27build/src/for: rename to handle/make/fileLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27handle/config/file: unified distclean handlingLeah Rowe
use build/src/for -c which does the same thing, specifically: try distclean, then clean, or fail Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27build/src/for: use -j for multithreaded buildsLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27build/release/src: update based on recent changesLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27scripts: put quotes around file/directory namesLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-26much, much stricter, more verbose error handlingLeah Rowe
lbmk is much more likely to crash now, in error conditions, which is a boon for further auditing. also: in "fetch", remove the downloaded program if fail() was called. this would also be done for gnulib, when downloading grub, but done in such a way that gnulib goes first. where calls to err write "ERROR" in the string, they no longer say "ERROR" because the "err" function itself now does that automatically. also: listmodes/listoptions (in "lbmk") now reports an error if no scripts and/or directories are found. also: where a warning is given, but not an error, i've gone through in some places and redirected the output to stderr, not stdout as part of error checks: running anything as root, except for the "./build dependencies *" commands, is no longer permitted and lbmk will throw an error mrc downloads: debugfs output no longer redirected to /dev/null, and stderr no longer redirected to stdout. everything is verbose. certain non-error states are also more verbose. for example, patch_rom in blobs/inject will now state when injection succeeds certain actual errors(bugs) were fixed: for example, build/release/roms now correctly prepares the blobs hash files for a given target, containing only the files and checksums in the list. Previously, a printf message was included. Now, with this new code: blobutil/inject rightly verifies hashes. doing all of this in one giant patch is cleaner than 100 patches changing each file. even this is yet part of a much larger audit going on in the Libreboot project. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-24.gitcheck: continue if no .git (don't break)Leah Rowe
the user may have re-downloaded a coreboot tree, in a release. this is supported. therefore, some may have .git, and some will not Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-24.gitcheck: must stricter error handlingLeah Rowe
we also run it in releases, so to compensate: it now checks for .git/, but only in project directories, not the main lbmk directory of the git repository or a release. this is because in a release, it's possible that the user may still delete coreboot/ directories and re-download coreboot trees this is not intended, but we must not assume that users use libreboot the way it's intended! "much stricter" because there was previously none, intentionally, due to the above fact. the checking of .git/ should mitigate this (the script will exit with zero status if it isn't there) Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-24.gitcheck: only redirect stdout to /dev/nullLeah Rowe
do not redirect stderr this will help us for debugging purposes Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-24use the new coding style in scriptsLeah Rowe
there were stragglers left over from the last audit, and these stragglers still exist even after all the major re-factoring as of late the new style is: bsd-like coding style and error handling. verbose yet simple error handling. we use an "err" function in a way reminiscent of most C programs that you see in openbsd base (err.h) this style is very clean, resulting in readable code Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-23scripts: never exit 1, always call err insteadLeah Rowe
this same change has been applied, selectively, to certain return statements. the general rule is this: the return statement should only be used to direct logic within a script, where certain non-errors states are used to skip certain actions; the exit command should *never* be used to return non-zero, except by err(). in so doing, we ensure easier debugging of the build system also: strip_rom_image in build/release/roms was running "continue" when a rom file didn't exist, despite not being a while/for loop. i make it return (non-error condition) instead it's ok for a script to exit 0, where appropriate, but perhaps a function could also be written for it Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-23blobs/download: copy dl_path, don't move itLeah Rowe
moving it defeats the purpose of the caching mechanism that's in place. this should avoid unnecessary downloads Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-23unify err functions across scriptsLeah Rowe
include/err.sh this new handling also does mundane things, such as tell you what script b0rked Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-22.gitignore: ignore *all* seen filesLeah Rowe
u-boot and seabios are now handled by the same logic as coreboot, in lbmk, and these files are used for recursive downloads in the build system Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-22Merge pull request 'hp8300usdt: enable mSATA' (#118) from Riku_V/lbmk:master ↵Leah Rowe
into master Reviewed-on: https://codeberg.org/libreboot/lbmk/pulls/118
2023-08-22hp8300usdt: enable mSATARiku Viitanen
Signed-off-by: Riku Viitanen <riku.viitanen@protonmail.com>
2023-08-22Merge pull request 'memtest86+ v6.20' (#116) from Riku_V/lbmk:memtest into ↵Leah Rowe
master Reviewed-on: https://codeberg.org/libreboot/lbmk/pulls/116
2023-08-22memtest86+ v6.20Riku Viitanen
uses 32-bit variant for x86_32 arch. 64-bit for x86_64. resources/scripts/build/src/for: modified it a bit. when building e.g. "memtest86plus/build32" it correctly fetches "memtest86plus" instead. but builds memtest86plus/build32, which is inside that git repo Signed-off-by: Riku Viitanen <riku.viitanen@protonmail.com>
2023-08-22Merge pull request 'osbmk->lbmk' (#117) from Riku_V/lbmk:osbmk-lbmk into masterLeah Rowe
Reviewed-on: https://codeberg.org/libreboot/lbmk/pulls/117
2023-08-22also clean up the main scriptsLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-21general code cleanup on lbmk shell scriptsLeah Rowe
in update/blobs/download, i saw instances where appdir was being deleted with rm -r, but the more appropriate command would rm -Rf. this is now fixed. other than that, i've mostly just simplified a bunch of if statements and consolidated some duplicated logic (e.g. if/else block for dependencies in build_dependencies() of update/blobs/download one or two functions and/or variables have been renamed, for greater clarity in the code, also removed a few messages that were redundant used printf instead of echo, in a few places, also fixed up the indentation in a few places Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-21osbmk->lbmkRiku Viitanen
Signed-off-by: Riku Viitanen <riku.viitanen@protonmail.com>
2023-08-21unify build/defconfig and modify/defconfigLeah Rowe
they fundamentally perform the same action: copy the .config file and run make, but build runs make-all, while modify runs make-oldconfig or make-menuconfig merge this functionality together also: ./handle config file ^ this is the new syntax, not: ./build defconfig for for example: ./handle config file -b coreboot x200_8mb <-- build x200 rom ./handle config file -m coreboot x200_8mb <-- modify configs ./handle config file -u coreboot x200_8mb <-- make-oldconfig ./handle config file -u seabios ./handle config file -b u-boot yes, 1 script and a sloccount reduction of 52. and the audit? it continues. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-20main lbmk script: exit non-zero if argc is wrongLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-20fix "./build help"Leah Rowe
thanks Riku Viitanen for pointing out the bug i b0rked it myself in an earlier revision, while auditing. it's funny because i made this exact same mistake during the last audit, and in the exact same way it's fixed once again Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-20unify dependencies scriptsLeah Rowe
the unified logic is so small that i simply added it to the main "build" script commands are identical. example: ./build dependencies debian Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-20unify build/clean into ./build release srcLeah Rowe
handle it all in the 1 script quite a few clean scripts are still present, so resources/scripts/build/clean/ still exists. 23 sloc reduction. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-20unify most module build scriptsLeah Rowe
Some of them weren't even used at all, such as the flashrom build script. the bios_extract build script existed but was never used, because we only called (from blobutil) a python script from in there, without actually compiling anything! resources/script/build/src/for Usage, e.g.: ./build src for memtest86plus It also handles fetch. This script is intended largely for those codebases that are quite simple, requiring trivial or no intervention besides running "make". 37 sloc reduction. Not a lot, but the audit continues! These optimisations add up. I started at 3300 sloc in resources/scripts and me target is 2k (2000) sloc. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-20unify grub scripts under one directoryLeah Rowe
new commands are thus, build grub payloads: ./build grub payload (formerly ./build payload grub) build grub utils: ./build grub utils (formerly ./build module grub) The scripts is build/module/ will mostly be deleted. I say mostly, because some of them are being moved instead. The deleted ones will be ones that basically just run "make" in the target directory. They will be unified, in a follow-up patch. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-20grub/modules.list: add argon2Leah Rowe
the argon2 patches are now included in grub, but we need to add it in grub-mkstandalone Signed-off-by: Leah Rowe <leah@libreboot.org>