Don't hardcode the cache directory, and don't store
remotes anymore. This change retains compatibility
in practice, with the older directory location, because
it's extremely unlikely that newly generated locations
would conflict with old ones.
With this new change, non-mirror git clone caches are
now done twice; one directory per remote, rather than
one directory with two remotes.
This is just inherently much more reliable.
Signed-off-by: Leah Rowe <leah@libreboot.org>
Some repositories might use CR-LF line endings. This option
keeps Git from mangling patches when merging.
Repositories that don't do this, such as ALL repositories
currently used by xbmk, will be unaffected by this change.
This is being done in preparation for importing MrChromebox
edk2, as Intel's own edk2 repository on GitHub uses these.
Signed-off-by: Leah Rowe <leah@libreboot.org>
Don't do one repository for all remotes. Do one *clone* per
remote.
This also means that users no longer download information twice,
in practice, because the backup repository will only be downloaded
if the main one didn't work.
Theoretically, this change is makes the process less efficient, but
in practise it's more reliable now.
We do now use --mirror on the git clone command for caches, but we
already did git pull --all before.
This just ensures that we absolutely have all local code.
NOTE:
The new code isn't used by default. To use it, you must do:
export XBMK_CACHE_MIRROR="y"
Otherwise, the old behaviour will continue to be used. This is
because the new code, while correct, puts more strain on upstream
servers (more code being downloaded), and can result in higher amounts
of disk space being used. The old behaviour wasn't broken, so we'll
also support that method.
TODO: perhaps also have a check in place to re-use both caches,
where available, regardless of XBMK_CACHE_MIRROR?
Signed-off-by: Leah Rowe <leah@libreboot.org>
recent re-factoring lead to certain code lines that
exceeded 79 characters in length.
we like to avoid this, whenever possible.
Signed-off-by: Leah Rowe <leah@libreboot.org>
whatchanged is deprecated, and results in an error
on modern git versions, prompting you to include
the --i-still-use-this argument
what absolute, utter fucking arrogance. i use the
whatchanged feature every fucking day.
i will be complaining to git-scm.com about this.
but that's what we do in libreboot. we adapt.
Signed-off-by: Leah Rowe <leah@libreboot.org>
the way it was used is messy, and a relic of the
old chained command coding style, from before when
i recently loosened that requirement.
the new focus is simple, readable code, regardless
of size.
Signed-off-by: Leah Rowe <leah@libreboot.org>
instead of checking if_not_dry_build.
use it here the same way.
yes. shell script macros. it's how i roll.
Signed-off-by: Leah Rowe <leah@libreboot.org>
i added this in an earlier version of the patch, but
for some reason removed it.
this is necessary, or the build system will fail.
Signed-off-by: Leah Rowe <leah@libreboot.org>
I realised that the Dell OptiPlex 3050 Micro has NVRAM available.
Use that backend, and hardcode power_on_after_fail to Disable,
which is already done in cmos.default.
The Lenovo ThinkPad T480 currently has no option table in coreboot,
besides the CBFS one. For this, the CBFS option table has been
enabled, and the build system has been modified to insert
a relevant config for power_on_after_fail.
Nicholas Chin informs me that Kabylake generally has legacy NVRAM,
so enabling it for the T480/T480s should work, but we'll need
to use it in the future anyway; better to just use CBFS now.
I *could* use the CBFS backend on 3050micro as well.
Signed-off-by: Leah Rowe <leah@libreboot.org>
also, the check is -e, not -d, because we
might be operating on a symlink.
it's a bit hacky but this should work.
the previous change (now reverted) broke
re-use of the main cache/ in release work
directories.
Signed-off-by: Leah Rowe <leah@libreboot.org>
This reverts commit e8a3cd8cd0.
We still need this for extracting the CAB files containing
KBC1126 EC firmware.
Signed-off-by: Leah Rowe <leah@libreboot.org>
xbmkdir checks if a directory exists, before running
mkdir, and then still uses -p
i was testing xbmk on arch linux today, and noticed
that it errored out when a directory already exists.
i'm mitigating against buggy or differently behaving
mkdir implementations this way, by wrapping around
it.
Signed-off-by: Leah Rowe <leah@libreboot.org>
we need the full fd path to be automatically set. this
patch prevents it from being removed by ./mk -u coreboot
Signed-off-by: Leah Rowe <leah@libreboot.org>
otherwise, ./mk -u screws up the FSP path
we were still using the correct path for downloading
in ./mk inject, and in practise, the file used by
coreboot would have been the same, but without our
hash verification after splitting up the FSP.
that's the main reason we split FSP in lbmk, rather
than relying on coreboot's logic for this.
Signed-off-by: Leah Rowe <leah@libreboot.org>
but do it better. this time, the change won't cause any
behavioural differences.
the reason for the change is we don't want "$@" inside
an eval statement, if such calamity can be avoided.
Signed-off-by: Leah Rowe <leah@libreboot.org>
this reverts change made to this function in:
commit 4f01dc704a
Author: Leah Rowe <leah@libreboot.org>
Date: Sat Oct 4 06:13:15 2025 +0100
xbmk: remove even more eval statements
for some reason, the new code caused sch5545 ec firmware
to never download.
the old code wasn't horribly broken, so just use that.
Signed-off-by: Leah Rowe <leah@libreboot.org>
this way, the clean version can be placed inside the
release tarball.
there is a make clean option in sbase, but we should
not really on this.
the design of xbmk is that a clean src tarball is
created. there must not be build artifications in it.
Signed-off-by: Leah Rowe <leah@libreboot.org>
the --status flag seems to be a GNUism
as stated in the previous commit, i import sbase
suckless now, so as to have a consistent implementation
of sha512sum.
this ensures that its output is reliable, when i'm using
the output of this command within backticks.
Signed-off-by: Leah Rowe <leah@libreboot.org>
i currently use the output of sha512sum in several
places of xbmk, which is a bit unreliable in case
output changes.
other cases where i use util outputs in variables
are probably reliable, because i'm using mostly
posix utilities in those.
to mitigate this, i now import suckless sbase, which
has a reasonable sha512sum implementation.
*every* binary it builds is being placed in build.list,
because i'll probably start using more of them.
for example, i may start modifying the "date"
implementation, adding the GNU-specific options that
i need as mentioned on init.sh
i'm importing it in util/ because the sha512sum
util is needed for verifying project sources, so
if sbase itself is a "project source", that means
we can into a chicken and egg bootstrapping problem.
this is sbase at revision:
055cc1ae1b3a13c3d8f25af0a4a3316590efcd48
Signed-off-by: Leah Rowe <leah@libreboot.org>
i unrolled these lines earlier, but this line was
incorrect; dl was already handled. it's dl_bkup
that we have to handle here.
Signed-off-by: Leah Rowe <leah@libreboot.org>
the symlink check is what made me use eval, but the
symlink check is not required, since i check every
entry that goes in nuke.list anyway.
not having that symlink check is safer than having
an eval statement on that line.
Signed-off-by: Leah Rowe <leah@libreboot.org>
and add a line break where it is used
now it is essentially a macro of sorts, used in
terms of syntax, to mean the same as:
if [ "$dry" != ":" ]; do
thing
fi
in this case, we say:
$if_not_dry_build \
thing
yes. macros in sh are a thing.
Signed-off-by: Leah Rowe <leah@libreboot.org>
this allows me to remove several eval calls, and the
errors relating to configs can now show exactly which
function they occured in, allowing for easier debugging.
once again, eval should be used sparingly if at all.
Signed-off-by: Leah Rowe <leah@libreboot.org>
i will eventually find a way to remove them all,
while still leaving the code completely clean.
in practise, i never use the contents of a file
for eval and the inputs are carefully checked.
however, over-use of eval is always a bad idea
in shell scripting.
Signed-off-by: Leah Rowe <leah@libreboot.org>
this was sent by bauduser, who messed up the pull
request (number 362). i'm simply merging the
change manually.
once again, i instructed this contributor to
properly learn git vcs.
Signed-off-by: Leah Rowe <leah@libreboot.org>