summaryrefslogtreecommitdiff
path: root/include/vendor.sh
AgeCommit message (Collapse)Author
2024-08-31vendor.sh: print extract errors to /dev/nullLeah Rowe
the output isn't really super critical, because it pertains to files that would just result in a coreboot build error if they didn't extract, which would still allow me to know if a given extract function failed. however, the extract function shows a lot of error output because it literally bruteforces various extract methods, when dealing with vendor files. mitigate this by just printing the errors to /dev/null. this will prevent users from erroneously thinking that lbmk is operating under error condition, when it isn't. we do sometimes get questions about it on irc. fewer questions on irc is better. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-08-11vendor.sh: use readkconfig on inject tooLeah Rowe
same as the last change. we must avoid use of make variables, in sh specifically, when handling these configuration files. Signed-off-by: Leah Rowe <info@minifree.org>
2024-08-11vendor.sh: don't load entire coreboot configsLeah Rowe
instead, only grep for the entries required, such as Intel ME paths. some variables in coreboot configs use $(), which is used in *make*, on the coreboot build system, and there refers to variables. here, we are sourcing them from sh, which treats this as a mini subshell to run a command; for example CONFIG_FOO would be executed, which is bad. The current logic still theoretically has this problem, with this patch, but the entries we scan from the configs do not currently have variable names in the strings. So: filter out just what we need, into a temporary config, when scanning for vendor files in coreboot configs, and use the temporary config. This fixes a build error when compiling for e5520_6mb. Signed-off-by: Leah Rowe <info@minifree.org>
2024-07-28lib.sh: new function mk() to handle trees in bulkLeah Rowe
single-tree projects cannot be handled in bulk, e.g. ./mk -f project1 project2 project3 that is still the case, from the shell, but internally it is now possible: mk -f project1 project2 project3 mk() is a function that simply handles the given flag, and all projects specified. it does not handle cases without argument, for example you cannot do: mk -f arguments must be provided. it can be used internally, to simplify cases where multiple single-tree projects must be handled, but *also* allows multi-tree projects to be specified, without being able to actually handle trees within that multi-tree project; so for example, you can only specify coreboot, and then it would run on every coreboot tree. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-07-26general code cleanup in the build systemLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-07-19vendor.sh: don't use XBMK_CACHE for appdiraudit6Leah Rowe
the me_extract function prefixes it with PWD in some cases, but we can't predict where appdir will point to. the "app" directory is not intended to be a cache anyway, so it doesn't make sense to put it in the cache directory. it's essentially scratch memory. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-07-19put cachedir in environmental variableLeah Rowe
XBMK_CACHE is now used, instead of hardcoding cache/ this is exported initialised to cache/, if unset. this means you can set your own directory, and it means ./update release will use the same directory. this means bandwidth wastage is further avoided. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-07-17allow using coreboot's build system to add payloadLeah Rowe
lbmk must still define payloads, but specific configs may use coreboot's build system instead. you might use this to add your own config with, say, tianocore payload, using coreboot.git to build it, rather than using lbmk's choice of payloads. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-07-17unified cache file handling for vendorfile/subfileLeah Rowe
lib.sh download() is used by subfile handling in git.sh, e.g. crossgcc tarballs, and also the vendor scripts. vendor files are cached, but not subfiles for repos. cache both, under cache/file/, saved with the name equal to the checksum, so: cache/file/CHECKSUM also move vendorfiles/app/ to cache/app/ in this change. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-07-10remove executable permission on include/Leah Rowe
files under include/ should never be executed directly Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-07-09trees: support -d (dry run) for custom build logicLeah Rowe
-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-07rom.sh: new file, to replace script/romsLeah Rowe
stub it from the trees script. the way it works now, there is less code in the build system. ./build roms this is no longer a thing ./build roms serprog this is also no longer a thing. instead, do: ./update trees -b coreboot targetnamehere ./update trees -b pico-serprog ./update trees -b stm32-vserprog the old commands still works, which causes the new commands to run coreboot roms now appear in elf/, not bin/, as before, but those images now contain payloads. NOTE: to contradict the above: ./build roms is no longer a thing, in that it's now deprecated, but backward compatibility is present for now. it will be removed in a future release. ./build roms list also still works! it will do: ./update trees -b coreboot list also: ./update trees -b grub list this is now possible too if a target "list" is provided, for multi-tree sources, the targets are shown. there is another difference: seagrub roms are now seagrub_, instead of seabios_withgrub. seabios-only roms are no longer provided, where grub is also enabled; only seagrub is used. the user can easily remove the bootorder file, if they want seabios to not try grub first. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-30vendor.sh: remove mkdirs()Leah Rowe
merge it into the only calling function Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-29vendor.sh readcfg: split the -b coreboot commandLeah Rowe
just add a line break to make the code more readable Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-29vendor.sh: remove unnecessary checkLeah Rowe
the next command is a copy, which would give us the error if the file doesn't exist, and an appropriate message Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-29vendor.sh: condense inject() a bitLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-29vendor.sh extract_kbc1126: use quote on file checkLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-29vendor.sh extract_kbc1126ec: simplify build checkLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-29vendor.sh: simplify e6400 vga rom file checkLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-29vendor.sh: simplify variable checks for e6400vgaLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-29vendor.sh: condense fetch() a bit moreLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-29vendor.sh: remove unnecessary checkLeah Rowe
this is over-engineering, because we do not allow just about any path to be provided; it's not provided as an argument in a command, for example. this is dictated by a configuration file, which we control. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-29vendor.sh: simplify kbc1126 util handlingLeah Rowe
we don't need to check whether the binary exists, because make already does that for us. we still need to check that the directory exists, because older versions of coreboot did not include kbc1126, and we do still use older coreboot revisions on some boards. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-29vendor.sh: simplify bootstrap() utils handlingLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-29vendor.sh: simplified initialisation of _7ztestLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-29vendor.sh: condense detect_board() a bitLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-29vendor.sh: condense patch_rom() a bitLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-29vendor.sh: add return to end of bootstrap()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-29vendor.sh: rename getcfg() to readkconfig()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-29vendor.sh: merge cfgutils() into readcfg()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-29vendor.sh: remove build_dependencies_inject()Leah Rowe
merge it into vendor_inject() Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-29vendor.sh: simplify initialisation of variablesLeah Rowe
also unify handling of cbutils Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-29vendor.sh inject: skip serprog targetsLeah Rowe
this is to prevent a fault condition during automated testing Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-29vendor.sh: don't inject /dev/nullLeah Rowe
if injection is attempted, verification comes next, and verification fails. this happens for kcma/kgpe amd boards, where pike2008 fake roms are inserted by inserting the correct pci ids using /dev/null as a source. an empty pike2008 rom prevents seabios from loading the real pci rom, and this is done because the real one hangs SeaBIOS. a similar fix was made for ./vendor download, but overlooked for ./vendor inject. this patch fixes that. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-28vendor.sh: simplify inject()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-28vendor.sh: clean up GbE handlingLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-28vendor.sh: condense fetch() a bitLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-28vendor.sh: general code cleanupLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-28vendor.sh: simplified modify_gbe handlingLeah Rowe
we don't need the "modifygbe" variable. we only need to know that new_mac was set. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-28vendor.sh: simplify modify_gbe()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-28vendor.sh: minor code cleanupLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-28vendor.sh: re-add modify_gbe()Leah Rowe
i accidentally deleted it in an earlier code purge Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-28Revert "vendor.sh: remove unnecessary check"Leah Rowe
This reverts commit 8196ce6ddf4f0c2320cbb0f8ea378dfff0d639c4.
2024-06-28remove more unnecessary checks on trees commandsLeah Rowe
the trees script already performs these checks Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-28vendor.sh: remove unnecessary checksLeah Rowe
again: the trees script already checks binaries, and already checks sources. if they exist, the relevant action is skipped entirely. we don't need to check it in vendor.sh, because the trees script already performs the same check. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-28vendor.sh: remove unnecessary commandLeah Rowe
we don't need to download the entire coreboot tree here, because the next command after it builds utils from that tree, using the trees script which would then go and download that tree anyway; this is part of the design. if a given elf binary exists, it won't be re-built, but the missing sources will still be downloaded automatically. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-28vendor.sh: remove unnecesessary cbutils checkLeah Rowe
the trees script already does this same check, so don't do it in here. defer to the trees script. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-28vendor.sh: remove unnecessary checkLeah Rowe
mktemp will never return empty output, and the next command after it is an mkdir, which would throw an error anyway, if the string is empty. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-28vendor.sh: condense check_board() a bitLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-28vendor fetch(): condense variable initialisationLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>