lbmk/config
Leah Rowe 9646172145 trees: support -d (dry run) for custom build logic
-d does the same as -b, except for actually building
anything! in effect, it does the same as -f (fetch)
except that the resulting variable assignments will
not be recursive (as with -f).

if -d is passed, configuration is still loaded, defconfig
files are still cycled through, and more importantly:

helper functions are still processed.

the grub, serprog and coreboot helper functions have
been modified to return early (zero status) if -d is
passed.

this behaviour will be used to integrate vendor.sh
logic in with the trees script, for cases where the
user wants to only handle vendor files. e.g.:

./update trees -b coreboot x230_12mb

this would download the files as usual, build coreboot,
with those files, and then build the payloads. but:

./update trees -d coreboot x230_12mb

this would download the files, NOT build coreboot, and
NOT build the payloads.

this change increases the sloccount a bit, but i'm relying
on the fact that the vendor.sh script already re-implements
config handling wastefully; the plan is to only use trees.

for now, simply stub the same ./vendor download command.

there is one additional benefit to doing it this way:

this method is *per-kconfig* rather than per-target.
this way, one kconfig might specify a given vendor file
that is not specified in the other. although the stub
still simply handles this per target, it's done in premake,
which means that the given .config file has been copied.

this means that when i properly re-integrate the logic
into script/trees, i'll be able to go for it per-kconfig.

the utils command has been removed, e.g.
./update trees -b coreboot utils default

the equivalent is now:
./update trees -d coreboot default

this would technically download vendor files, but here
we are specifying a target for which no kconfigs exist;
a check is also in place, to avoid running the vendor file
download logic if tree==target

the overall effect of this change is that the trees script
no longer contains any project-specific logic, except for
the crossgcc build logic.

it does include some config/data mkhelper files at the top,
for serprog and coreboot, so that those variables defined in
those files can be global, but another solution to mitigate
that will also be implemented in a future commit.

the purpose of this and other revisions (in the final push
to complete lbmk audit 6 / cbmk audit 2) is to generalise as
much logic as possible, removing various ugly hacks.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-07-09 02:55:20 +01:00
..
coreboot coreboot: set build_depend on target.cfg files 2024-07-06 11:34:27 +01:00
data trees: support -d (dry run) for custom build logic 2024-07-09 02:55:20 +01:00
dependencies Add dependency scripts for Fedora 40 and Ubuntu 24.04 2024-06-07 13:02:40 -05:00
flashprog/patches flashprog: bump to 5b4fdd1 from 2 May 2024 2024-05-26 20:30:45 +01:00
git lib.sh: more unified config handling 2024-06-22 13:44:27 +01:00
grub GRUB: use mkhelper.cfg for common variables 2024-07-01 03:32:35 +01:00
ifd config/ifd/dell_ivybridge: Add ifd_nogbe 2024-02-20 17:04:39 -07:00
memtest86plus/patches disable 32-bit memtest86plus, only build 64-bit 2023-10-09 06:06:20 +01:00
seabios/default handle build.list from config/data/, not config/ 2024-06-06 02:35:36 +01:00
submodule Libreboot 20240612 release 2024-06-12 08:43:33 +01:00
u-boot handle build.list from config/data/, not config/ 2024-06-06 02:35:36 +01:00
uefitool trees: avoid kconfig make commands generically 2024-06-27 15:55:56 +01:00
vendor lib.sh: more unified config handling 2024-06-22 13:44:27 +01:00