Commit Graph

111 Commits

Author SHA1 Message Date
Leah Rowe 300f2cb434 mk: remove u-boot-specific git-clean handling
yes, make it generalised. use a new variable in
mkhelper.cfg, gitclean and gitcleanargs

not enabled by default, but u-boot enables it. i'm
considering whether to use this by default, as it
is the general policy of lbmk to clean everything
just after a build, as builds are cached out of
tree. this way, we can do re-builds safely for each
project. there are probably a lot of subtle bugs that
might be fixed if we used this

the problem is that this is currently only used on
lbmk.git, but not on libreboot release archives which
lack .git directories; the main one is initialised in
lbmk, but not in upstream sources. we could just initialise
those.

in fact, that is probably what i'm going to do.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 17:46:34 +01:00
Leah Rowe 2c94101884 mk: remove cleanargs from git-clean
totally worthless

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 17:35:19 +01:00
Leah Rowe 08f93ec812 mk: redirect readlink err to /dev/null
i had this before. forgot to add it in the new
design. oops.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 13:23:10 +01:00
Leah Rowe e99be6e5dc mk: ruthlessly simplify findpath()
i love eval, printf and awk

eval, printf and awk are the best things ever

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 12:47:01 +01:00
Leah Rowe e075a79867 err even louder
Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 12:27:42 +01:00
Leah Rowe cd52750fec mk: further simplify err()
yes, just awk everything, double-quoted

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 12:25:35 +01:00
Leah Rowe f115bdfe37 mk: add error check on xbmkpwd init
Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 12:19:08 +01:00
Leah Rowe 76bf71ff65 mk: simplified findpath()
Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 12:08:53 +01:00
Leah Rowe c4695497f5 mk: simplified error functions
Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 11:54:52 +01:00
Leah Rowe d9ca4265ef mk: remove xprintf
totally useless function. all it does is print
quotes. just printf the args into awk

this does literally the same thing. the output
will literally be the same.

unclear thinking == unclear code

right thinking == this patch

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 11:45:28 +01:00
Leah Rowe b32dd39262 move findpath and err functions to mk
otherwise, it's totally broken. i also now include
lib.sh later.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 11:37:34 +01:00
Leah Rowe c0402ef642 mk: simplify xbmkpwd initialisation
do it from mk instead. we don't need to run pwd
anymore, because we just get the path and cd
to it, setting that as the path.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 11:30:49 +01:00
Leah Rowe 16e04411f2 mk: include lib.sh earlier
this means we can now cd to wrkdir using findpath,
and it means the cd command can be wrapped in x_

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 11:11:04 +01:00
Leah Rowe b09cd4ada4 mk: call xbmk_init through x_
the function never returns 1 at the moment, but
this is a useful future trap.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 11:07:56 +01:00
Leah Rowe abee462f2a mk: run xbmk_init here, not from init.sh
it should be clear on first reading, what the actual
control flow is. hiding the call in init.sh obscures
first reading.

now it is absolutely clear on first reading, that
xbmk_init is called before going through everything
else in mk.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 11:07:24 +01:00
Leah Rowe cb49e77947 delete straggler
Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 10:09:22 +01:00
Leah Rowe 93b49afa3f mk: remove gcc/gnat matching logic (obsolete)
coreboot has this now:

commit c421847fe2fef61586eb313206a4be0f2e491974
Author: Matt DeVillier <matt.devillier@gmail.com>
Date:   Mon Dec 29 10:12:17 2025 -0600

    util/crossgcc: Fix GNAT detection for gnat-15

this one is advisory instead, telling the user to
create such a symlink as we did. this is much less
invasive.

our own check was bad, because it basically silences
what is otherwise an error. coreboot's approach is
more correct, so we will defer to that instead.

note that this means older coreboot (for fam15h) is
no longer covered, but those trees don't use gnat
anyway as libgfxinit is unused on those targets

this lbmk patch removes 61 sloc of dead code, which
makes me very happy.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 10:05:16 +01:00
Leah Rowe 6c3791ce81 mk: rename trees() to main()
Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 09:33:30 +01:00
Leah Rowe d17b06f589 merge tree.sh into mk
mk is so tiny now, and will likely never get
bigger. tree.sh is effectively the main script
now, so let's treat it as such.

i'll start splitting tree.sh instead. e.g.
move gcc setup to its own file.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 09:26:37 +01:00
Leah Rowe 4ebede5b99 tree.sh: fix globbing in multi-tree command args
this solves a bug that does not yet manifest, because
this bug *can't* currently trigger any error due to
lbmk's design. this is therefore a preventative fix,
for reasons that will become clear.

we previously put arguments in a variable, in a way
that didn't handle globbing. now we avoid a variable
and use "$@" instead, which solves the problem.

this also means that the main logic in mk can be
cleaner, as trees-specific control logic is now
placed entirely in tree.sh's main.

this means that we can now also wrap x_ around trees()

this was never a problem in the past, because all of
the arguments for trees commands never have globbing;
config names are always e.g. foo_bar, not foo bar

in commands where globbing did need to be handled,
those commands were never trees commands. e.g.
you had ./mk inject filename

yes, this is a design improvement, or a preventative
bug fix. pick your poison.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 08:06:51 +01:00
Leah Rowe a82328904e mk: clean up printf command
Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 00:36:10 +01:00
Leah Rowe 823a1fd011 mk: put all includes in one place
the previous design flaw was fixed by recent
refactors, such that i can now . include all
of lbmk at once, and have control logic right
after that.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 00:14:55 +01:00
Leah Rowe 5fb0d1098f mk: simplified command handling
just do includes in mk again. common.sh was stupidly
small, just pointless.

replace the entire command dispatcher with eval, printf
and awk, because i can, and it further reduces sloccount.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 00:05:48 +01:00
Leah Rowe eb23cd3de8 split up include/
Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-13 15:33:21 +01:00
Leah Rowe 798cc79399 mk: export locales much earlier
also simplify the way it works (eval and awk)

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-12 08:49:53 +01:00
Leah Rowe 04c3bc53b6 mk: add error exit
not needed at the moment, since we ensure that
the functions always exit with error under fault
condition. they always return zero.

nevertheless, this might catch some unexpected
behaviour in the future.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-10 20:08:08 +01:00
Leah Rowe d722a02cda mk: remove redundant xrval variable
not needed.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-10 20:06:46 +01:00
Leah Rowe 6fe1d47fb3 mk: remove redundant set command
we exit immediately afterward, so there's
no point in putting this here.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-10 20:01:48 +01:00
Leah Rowe 005f1189c1 mk: major code cleanup
we don't need a main here. it's so generic that we
can just leave it really small like it is now. now
it's much clearer what it actually does.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-10 19:56:36 +01:00
Leah Rowe 86781a5881 mk: simplified command check
Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-10 19:43:28 +01:00
Leah Rowe 61ab5723df xbmk: use proper shebang
env isn't that useful these days. better just
use the standard declaration.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-10 19:37:16 +01:00
Leah Rowe 8822c56815 mk: make it completely generic
commands now fed from a file, include/common.sh
which in turn also includes other lib files

this makes mk completely generic, and means
that changes will now be completely in sync
with cbmk, ensuring a lack of merge conflicts,
though the file was already pretty small anyway.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-10 18:05:57 +01:00
Leah Rowe bb0221252c mk: make xbcddir usage clearer
it's always a directory, so filter it first

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-10 17:47:48 +01:00
Leah Rowe 1ceeb0ab55 update lbmk headers
i made several modificatinos to several files
thus for in 2026, in the main part of the build system.

i've added 2026 to the ones that i modified.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-10 17:45:11 +01:00
Leah Rowe bb4c038794 cleanup
actually use xbarg0

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-10 15:03:03 +01:00
Leah Rowe 786cf8cd9c xbmk: allow to run from PATH
now you can put lbmk somewhere on your system,
and symlink to the mk script from PATH

e.g. /usr/local/bin/lbmk -> /home/leah/lbmk/mk

lbmk will cd to itself, including from PATH,
because the string will then be passed through
readlink, which gets the real path.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-10 14:03:11 +01:00
Leah Rowe 189b61018f xbmk: allow running from outside of work dir
i need only now implement a check for sys dirs
e.g. /etc/lbmk.cfg and check if it defines
e.g. other location for config/ and include/

then mk is a generic dispatcher and i can one
day make mk possible to install. for example, if
you have a bsd ports system and you want to
install lbmk

i could make it check user dirs too, overriding
defaults. for example /usr/local/etc/lbmk, but
then i might have ~/.config/lbmk

you no longer need to be in the xbmk directory
to run xbmk. it'll cd to itself, with this patch

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-10 13:52:16 +01:00
Leah Rowe e973584123 mk: generalised dispatch loop
with this new function, i can turn commands on and
off by virtue of config. for now, behaviour is
unchanged, but this new design means i will be
able to disable certain commands in child processes

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-10 13:49:34 +01:00
Leah Rowe afdf8c7733 Revert "xbmk: general code cleanup"
This reverts commit 1b65e8914c.

NOTE: cleanup of xbmk_git_init was retained

this "cleanup" actually made the code harder to read.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-10 12:34:35 +01:00
Leah Rowe 1b65e8914c xbmk: general code cleanup
make the code much easier to read

i also cleaned up the recent git identity check

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-07-30 11:58:11 +01:00
Leah Rowe d7869a56f5 WIP: chromebook integration script
I intend to merge every Chromebook that Mrchromebox supports,
into Libreboot, ready for the Libreboot 25.12 release. Work
is still ongoing, and several changes need to happen in lbmk.

I started working on it a few weeks ago (today is
14 November 2025 as I push this).

Still TODO:

* Automatically create lbmk coreboot targets, based
  on the configs present in MrChromebox git
* Re-work git repository management in lbmk, such that
  a list of upstreams is used, instead of a hardcoded
  list per configuration; this will allow us to use
  different remotes across the same project, even where
  they diverge. This would then allow us to use the
  MrChromebook repository directly, instead of cherry-picking
  patches into upstream coreboot
* The note above about remotes would also mean that we can
  use MrChromebox's own edk2 repository directly. All of this
  would reduce the burden on lbmk.git
* Support building edk2 payloads, exactly mirroring the
  setups used on MrChromebox builds

There are some things that need to be checked first, for
boards that use MMC-based or eMMC-based storage, for the
GRUB and SeaBIOS payloads, also U-Boot, because I will
also be using these.

As such, this current script shall sit in lbmk master, but
it is not yet finished.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-11-14 18:22:51 +00:00
Leah Rowe 0605fbe720 xbmk: general cleanup: unroll condensed code lines
i overlooked a number of lines, during previous cleanup

Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-10-04 02:43:24 +01:00
Leah Rowe e42cb4f4cd xbmk: tidy up some if statements
this is an extension of the previous work to unroll
most of the condensed code lines.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-09-26 00:09:46 +01:00
Leah Rowe 4686ba8a4a make notices a bit more readable
add line breaks, so that the license and author are
visually separated. this makes it easier to read.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-09-24 20:14:51 +01:00
Leah Rowe 03bf6c185b mk: unroll condensed code lines
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-09-24 08:53:24 +01:00
Leah Rowe 995963baf4 xbmk: much more verbose error messages
use the new functionality in err(), whereby a given
function name and arguments can be provided, for
debugging purposes.

something similar was already done in a few places,
and replaced with this unified functionality.

this patch will make xbmk much easier to debug, under
fault conditions.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-09-13 13:27:47 +01:00
Leah Rowe 23fb10c3f5 mk: include mrc.sh before inject.sh
and vendor.sh before mrc.sh

Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-09-07 17:04:58 +01:00
Leah Rowe 5096e0040f mk: hardened PWD check (deny symlinks)
we check if the first argument is "./mk" and bail if not,
which forces you to be in the xbmk work directory.

however, this check is flawed because symlinks were still
possible.

this patch prevents a same-named symlink "mk" pointing to
the real mk from being used.

this hardening is necessary, due to several built-in
assumptions inherent within the design of xbmk.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-09-05 11:46:16 +01:00
Leah Rowe 0d107ad872 xbmk: remove xbloc, re-use xbtmp instead
we no longer separate them. xbloc was the on-disk
tmp directory, whereas xbtmp used to be in /tmp
which we assumed to be tmpfs (it may not be, but
often is on many workstation setups - and our
documentation recommended doing this).

as mentioned in the previous commit, benchmarking
shows little speed difference using tmpfs /tmp
versus on-disk /tmp, for our purposes at least.
therefore, the handling of tmp files is being
greatly simplified.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-09-02 06:29:20 +01:00
Leah Rowe ad58364e18 mk: simplify the main script check
it's still not perfect, but now it's unambiguous.

the previous generic check was written based on the
fact that xbmk's main script used to also be called
via several symlinks, which is no longer the case.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-08-31 18:27:09 +01:00