summaryrefslogtreecommitdiff
path: root/include
AgeCommit message (Collapse)Author
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-17git.sh: remove previous tmprepo if args>5Leah Rowe
if doing a retry, the directory may still exist, which would make git clone yield an error response; the existing directory will have been the one that failed to reset, so let's delete it. the one deleted is not the cache (repo/PROJECT/), thus otherwise maintaining current behaviour. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-07-17git.sh: try direct clone if cached git failsLeah Rowe
normally, a project is cached at repo/PROJECT/, and cloned from there to the final destination. errors lead to a calling of $err, but this will result in a return if done from inside a subshell, of non-zero value, so use this to re-try with a 6th argument when calling tmpclone(). in most cases, this fallback will never kick in, but it will kick in resetting or patching the cached clone fails; specifically, we are interested in the reset part. a given project name may change repositories in lbmk at a given time. if this happens, and the old one is cached, the overall result of this patch is that lbmk will fall back to the old behaviour, where git urls are tried directly, without caching. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-07-17git.sh: re-try git pull three timesLeah Rowe
mitigate jittery internet connections Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-07-17trees: auto-delete+auto-rebuild if project changesLeah Rowe
actual source code is not scanned, but config directories are scanned. simply get the checksum of each file under config/ pertaining to a given project/tree, and also for the given target. coreboot utilities are also handled. if it changes, in any way, delete and re-build automatically. such deletions should probably still be done manually, as part of understanding the build system, but this change should make the build system much easier to use during development. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-07-17git.sh: don't download to src/project/project/Leah Rowe
re-use repo/project/ this means that single- and multi-tree projects now have a unified cached git repo location, as per the new rules, thus saving on disk space usage. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-07-17git.sh: cache git downloads to repo/Leah Rowe
do it based on the URL, e.g. https://review.coreboot.org/coreboot becomes repo/coreboot the downside is if you have two projects with repo urls specifying the same string at the end, but this isn't the case at the moment and likely won't be the case, but it's a theoretical issue. this saves on bandwidth when downloading identical submodule repos between multiple trees within the same multi-tree project for example, coreboot 3rdparty/vboot is no longer downloaded more than once, instead cloned locally on subsequent downloads. if repo/DIR exists, git-pull is attempted, but errors do not result in a non-zero exit, by design. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-07-10trees: general code cleanupLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-07-10trees: use wrapper for dry-running make commandsLeah Rowe
instead of using lots of if/else conditions, do that once and set a variable, dry, to : if not doing a dry run, the variable is empty. prefix this variable in places where you don't want a certain action to be performed, on dry runs. more specifically, : does *nothing* and always returns with zero status (success). this results in cleaner code, and a small sloccount reduction. 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-10rom.sh: actually say if a cbutil existsLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-07-10rom.sh: avoid re-building cbutils if builtLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-07-10rom.sh: only before cbutils before corebootLeah Rowe
otherwise, due to the idiosyncratic nature of the coreboot build system, the coreboot.rom gets wiped out. cbutils is still handled by premake. ensure that payloads are only inserted just after running the coreboot make command. fixes a build issues introduced on 9020sff, previously unhandled. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-07-09minor cleanupLeah Rowe
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-08rom.sh: only make rom tarball if release=yLeah Rowe
Signed-off-by: Leah Rowe <info@minifree.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-30git.sh: simpler for loop in git_am_patches()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-30git.sh: merge for loops in git_am_patches()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-30trees and git.sh: tidy up global variablesLeah Rowe
some of the variables only initialised in git.sh are also used in the trees script, which is technically ok because git.sh is included from the trees script, but it makes more sense to declare them in the latter. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-30git.sh: simplified initialisation of "loc"Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-30git.sh: condense fetch_targets() a bitLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-30git.sh: short git_prep command in fetch_targets()Leah Rowe
loc is already set, and will correspond to the same path, so we can quite conveniently use it. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-30git.sh: merge prepare_new_tree with fetch_targetsLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-30git.sh: remove duplicate "xtree" variableLeah Rowe
it's already defined inside the trees script Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-30trees, multi: download bare project *before* treesLeah Rowe
when downloading multi-tree projects, the rev can be reset to HEAD instead of the actual rev for a given target. this occurs when the bare repo (e.g. src/coreboot/coreboot) does not exist and has to be downloaded first. bare repository downloading does not rely on target.cfg, in this context, only pkg.cfg, but it uses the same variable names (e.g. "rev"). instead of using a separate variable name, thus increasing code complexity (which is the exact opposite of what i want to do), do the bare repository download first. this means that the git.sh script is much cleaner now, for multi-tree projects, in that it *only* copies the bare repo then runs git_prep; in that context, the bare repo is cloned directly by calling the relevant function from script/trees, which is the same behaviour as when cloning single-tree project sources. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-30trees: unified multi-tree configuration handlingLeah Rowe
the same function that loads configurations for single-tree projects has been merged with the function for multi-tree configs in git.sh, and that functionality has been removed from git.sh; now it is all unified in the trees script. as the saying goes: write one program to do one thing well. the purpose of git.sh is to download source code, but not to handle configuration files; the latter is meant to be handled by the trees script, which then calls into git.sh before running the build logic for that given project. additionally: the "seen" files are no longer handled, at all. the logic there was added ages ago, because at the time, i was considering whether to separate configuration into a new repository, so that users could more easily make their own configuration, so it was a guard against misconfiguration. however, that decision was canceled and we're always very careful not to introduce a loop; if a loop does occur, the worst that can possibly happen is you waste some CPU cycles. Instead, print (on standard output) what config file is being used, so the operator can see when an infinite loop occurs. ALSO: remove _setcfgarg in load_project_config() it was used to skip when a target.cfg file didn't exist, specifically on single-tree projects, but this is now handled using -f instead, on the while loop inside that function, so _setcfgarg is now a redundant variable. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-29git.sh: rename Fetch_project_trees fetch_targetsLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-29git.sh: rename fetch_project_repo to fetch_projectLeah Rowe
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>