Commit Graph

853 Commits (950166da7b1c00a19bc7e0427e48d1eb4afa04f3)

Author SHA1 Message Date
Leah Rowe 6722624dfc build/boot/roms: fix bad variable assignment
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-28 13:51:17 +01:00
Leah Rowe 55be6dda10 dependencies/ubuntu2004: update based on debian
ttf-unifont instead of fonts-unifont

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28 12:16:43 +01:00
Leah Rowe 0052f9d03a fix: don't require git config for dependencies
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-28 12:00:26 +01:00
Leah Rowe 6dbddf852c build/boot/roms: simplify ich9m ifd handling
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28 11:41:38 +01:00
Leah Rowe f5787c9e50 build/boot/roms ich9m ifd: use fast dd command
bs=block size and count=1,
rather than bs=1 and count=block size

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28 11:28:41 +01:00
Leah Rowe d9292cec6a build/boot/roms: use the new coding style
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-28 11:23:23 +01:00
Leah Rowe 4623f3f2b2 Remove superfluous GRUB modules (save CBFS space)
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-28 01:25:10 +01:00
Leah Rowe 623c338917 fix typo in error message ("as not permitted")
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27 18:25:49 +01:00
Leah Rowe 4a280c629f .gitcheck: re-write entirely. force global config.
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-27 18:17:31 +01:00
Leah Rowe 355eb765ff move resources/scripts/ to script/
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27 17:19:36 +01:00
Leah Rowe eed34d3e8b enable memtest86plus on various boards
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-27 15:23:58 +01:00
Leah Rowe bc0fb51d22 x86 desktops: only enable seabios_withgrub
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-27 15:02:11 +01:00
Leah Rowe 9457d6be52 unified list command for all scripts
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-27 14:24:20 +01:00
Leah Rowe 93d2dcad2d handle/make/config: add missing pipes for err
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-27 13:44:55 +01:00
Leah Rowe 0e6851c893 delete the Makefile
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-27 12:30:07 +01:00
Leah Rowe ebbefa6030 handle/config/file: rename to handle/make/config
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27 12:24:05 +01:00
Leah Rowe df6db1c64b handle/config: fix errant "handle src for" call
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27 12:21:41 +01:00
Leah Rowe 6874bc39de "handle src for" - change to handle make file
an oversight, in a previous edit

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27 12:08:56 +01:00
Leah Rowe 798ce03ae3 handle/config: add missing error handle
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27 12:07:59 +01:00
Leah Rowe 29a8193eb2 build/src/for: rename to handle/make/file
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27 11:42:20 +01:00
Leah Rowe 27c67295c7 handle/config/file: unified distclean handling
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-27 11:35:02 +01:00
Leah Rowe 197464bc4b build/src/for: use -j for multithreaded builds
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27 11:34:24 +01:00
Leah Rowe 95f290d9e3 build/release/src: update based on recent changes
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27 11:33:08 +01:00
Leah Rowe 5a47c01b11 scripts: put quotes around file/directory names
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-27 09:25:50 +01:00
Leah Rowe 1c8401be25 much, much stricter, more verbose error handling
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-26 16:58:32 +01:00
Leah Rowe 50c395df59 .gitcheck: continue if no .git (don't break)
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 16:37:40 +01:00
Leah Rowe be7a5b0ca2 .gitcheck: must stricter error handling
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 01:09:54 +01:00
Leah Rowe 3a5ba57f5e .gitcheck: only redirect stdout to /dev/null
do not redirect stderr

this will help us for debugging purposes

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-24 01:00:04 +01:00
Leah Rowe 8f4f0e00ec use the new coding style in scripts
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-24 00:31:19 +01:00
Leah Rowe 4c6c7d1088 scripts: never exit 1, always call err instead
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-23 21:34:02 +01:00
Leah Rowe 52f3fd359e blobs/download: copy dl_path, don't move it
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-23 19:20:13 +01:00
Leah Rowe 57adbc6eb1 unify err functions across scripts
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-23 19:12:00 +01:00
Leah Rowe b3fbcdf66e .gitignore: ignore *all* seen files
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-22 20:48:04 +01:00
Leah Rowe 24f093359a Merge pull request 'hp8300usdt: enable mSATA' (#118) from Riku_V/lbmk:master into master
Reviewed-on: https://codeberg.org/libreboot/lbmk/pulls/118
2023-08-22 19:47:20 +00:00
Riku Viitanen df1e8913f3 hp8300usdt: enable mSATA
Signed-off-by: Riku Viitanen <riku.viitanen@protonmail.com>
2023-08-22 20:41:08 +03:00
Leah Rowe dfb93166bb Merge pull request 'memtest86+ v6.20' (#116) from Riku_V/lbmk:memtest into master
Reviewed-on: https://codeberg.org/libreboot/lbmk/pulls/116
2023-08-22 13:47:40 +00:00
Riku Viitanen fa92663214 memtest86+ v6.20
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-22 16:43:13 +03:00
Leah Rowe 1bd842097b Merge pull request 'osbmk->lbmk' (#117) from Riku_V/lbmk:osbmk-lbmk into master
Reviewed-on: https://codeberg.org/libreboot/lbmk/pulls/117
2023-08-22 09:42:09 +00:00
Leah Rowe 04ee26726a also clean up the main scripts
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-22 00:34:15 +01:00
Leah Rowe 62f23123cb general code cleanup on lbmk shell scripts
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-21 22:38:00 +01:00
Riku Viitanen 7be203dd23 osbmk->lbmk
Signed-off-by: Riku Viitanen <riku.viitanen@protonmail.com>
2023-08-21 21:45:57 +03:00
Leah Rowe 7be4706552 unify build/defconfig and modify/defconfig
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-21 00:58:26 +01:00
Leah Rowe 0faf2a0c6f main lbmk script: exit non-zero if argc is wrong
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-20 21:39:39 +01:00
Leah Rowe 6e92d9a359 fix "./build help"
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-20 21:34:08 +01:00
Leah Rowe 9031bb7ba7 unify dependencies scripts
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-20 21:25:51 +01:00
Leah Rowe 023d6b6996 unify build/clean into ./build release src
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-20 18:58:32 +01:00
Leah Rowe f893a29b22 unify most module build scripts
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-20 17:47:02 +01:00
Leah Rowe c83d1a8dc4 unify grub scripts under one directory
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-20 16:40:11 +01:00
Leah Rowe 438bf2c9b1 grub/modules.list: add argon2
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>
2023-08-20 12:34:55 +01:00
Leah Rowe fd6025321c grub: import phc argon2 implementation (for luks2)
Patches pulled from:
https://git.nicholasjohnson.ch/grub
This is the author of the rebased patches:
https://nicholasjohnson.ch/
(Nicholas Johnson <nick@nicholasjohnson.ch>)

However, this is a *rebase* performed by Nicholas,
based on these patches:

https://aur.archlinux.org/cgit/aur.git/tree/?h=grub-improved-luks2-git
...at revision: 1c7932d90f1f62d0fd5485c5eb8ad79fa4c2f50d

The AUR patches were based on GRUB 2.06, whereas Nicholas's
rebase is upon grub 2.12, which Libreboot currently uses.

These patches import the PHC implementation of argon2i/id
key derivation functions, seen here:
https://github.com/P-H-C/phc-winner-argon2

GRUB (upstream) does not merge these patches and probably won't,
because even though they're libre, they're not copylefted or
otherwise under GPL terms that GRUB can accept.

Therefore, we in Libreboot must maintain these from now on,
for our version of GRUB. The upshot? LUKSv2 decryption should
now work, perfectly, in GRUB!

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-20 12:24:49 +01:00