summaryrefslogtreecommitdiff
path: root/include
AgeCommit message (Collapse)Author
2025-08-31init.sh: remove unnecessary lockfile checksLeah Rowe
we don't need these anymore, because we now know whether or not the lock file exists in these cases. this is because child/parent instance determination is now done based on the presence of that file, rather than how TMPDIR is set; and TMPDIR is now set accordingly, via more robust logic as in previous patching. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-08-31init.sh: move TMPDIR handling to own functionsLeah Rowe
this makes xbmk_set_env easier to read Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-08-31init.sh: prevent race condition with TMPDIRLeah Rowe
it is extremely unlikely to occur, but this patch reduces the likelihood even further. that unlikely occurance is: when creating a TMPDIR, it's possible that it was already created before. this is OK on child instances, where that is the intended behaviour (unified TMPDIR), but not for parent instances. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-08-31init.sh: MUCH safer TMPDIR handlingLeah Rowe
we previously checked whether xbmk was running a child instance, based on the initialisation of TMPDIR, but this relied on unreliable string substitutions, which could not be made inherently reliable. there were also no checks on whether the given TMPDIR, even if correct, was a directory or whether it was a symlink; there were also no checks on whether it changed. now with this change, child instances are detected by the presence of the lock file. the parent instance writes the generated TMPDIR location in that file, and this is checked again in the child instance, to ensure that the TMPDIR didn't change; it also errors out if the TMPDIR doesn't exist or if it is a symlink. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-08-29inject.sh: redirect stderer to /dev/null FIRSTLeah Rowe
for the grep command, we must ensure that errors are suppressed *BEFORE* outputting to a file. depending on the sh implementation, the previous code might have begun outputting to a file before suppressing errors. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-08-26vendor.sh: tidy up extract_intel_meLeah Rowe
too many chained commands. break it out a bit. this makes it more readable, without changing behaviour. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-08-23rom.sh: safer use of cat in copyps1biosLeah Rowe
the output to a file also has its own error handling, but x_ can be used safely to provide additional assurance that the script will break if an error occurs. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-08-23tree.sh: tidy up check_cross_compilerLeah Rowe
group related operations together, without whitespace. declare all variables at the start of the function. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-08-23tree.sh: don't re-check xgcc needlesslyLeah Rowe
instead, create a file indicating that a given xgcc target had already been built successfully, within a given coreboot tree. this will considerably speed up the building of release archives, especially when there are a lot of boards. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-08-23tree.sh: check xgcc AFTER checking elfdirLeah Rowe
if e.g. elf/coreboot/default/w500_16mb contains readied images from before, crossgcc is still being checked. if you already built all the coreboot images, and wanted to just modify all the payloads for example, this would result in a much slower re-build process, because it is needlessly re-checking crossgcc every time. by doing it this way, we need up the testing of payloads quite considerably, during xbmk development. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-08-23lib.sh: safer pad_one_byte functionLeah Rowe
instead of copying to a temp file and then concatenating with padding back to the main file, we concatenate and create the temp file, then move the temp file back to the main file. this is because cat can be quite error prone, more so than mv, so this will reduce the chance of corrupt files being left behind depending on the context (of course, the latter is often avoided due to xbmk's design, which emphasises use of temporary files first). this matches the same design used in the function unpad_one_byte, which creates the deconcatenated output in a temporary file first, moving it back. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-08-23vendor.sh: use pad/unpad functionsLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-08-23lib.sh: additional error handling on catLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-08-10tree.sh: Delete files *before* updating hashesLeah Rowe
The current logic deletes old project files e.g. sources, but *after* updating the project hash. This means that if a deletion fails, and the directory is still there (e.g. src/coreboot/default/) afterward, it's now a tainted archive, yet the hash has been updated, so subsequent runs of the build system will cause unknown errors. This patch fixes that, by first copying the new hash to a temporary file. *Then*, deletions are handled, and the final hash file is updated afterward. The code is now a bit more bloated as a result, but this will reduce the risk of tainted sources being handled under fault conditions. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-08-10tree.sh: rename hashtype to hashnameLeah Rowe
since it's the name, e.g. "default", referring to a project tree (in this example, coreboot/default). Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-08-10tree.sh: rename hashname to hashdirLeah Rowe
since it's only ever used as a directory name Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-08-10tree.sh: rename hashvar to badhashvarLeah Rowe
now the code that uses it makes a bit more sense to the casual reader. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-08-10tree.sh: rename function and remove commentsLeah Rowe
the new function names make the comments redundant. the code is now self-explanatory. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-08-04tree.sh: don't delete builds if tree==targetLeah Rowe
in that case, the previous tree-wide check will cover it, so the current logic wastes computational time. this patch therefore somewhat optimises the code. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-08-04tree.sh: re-add comments to check_hashesLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-08-02tree.sh: unified project hash handlingLeah Rowe
the target/project hash checks are basically identical, so let's unify them under a single function. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-08-01rom.sh: Don't run mkhelpers if release=nLeah Rowe
This fixes the following error on ./mk release: cp: cannot stat 'elf/coreboot/default/d510mo/libgfxinit_txtmode/coreboot.rom': No such file or directory I recently re-wrote the handling of coreboot images, and I overlooked this entirely. When a given target specifies release=n, it has to be skipped, so builds are not done. The "release" variable is already checked, in mkcoreboottar. Let's also put it in the other mkhelper functions, to make sure there are no errors. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-07-10rom.sh: Don't build coreboot utils if dry=":"Leah Rowe
This fixes a build error when doing ./mk release, after a regression caused by the last few commits. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-07-10cache coreboot builds in elf/ againLeah Rowe
This was a problem when I did it before, because individual target builds weren't automatically re-compiled when needed. The recent design improvements in lbmk enable this to be done again. Cached images in elf/ have no payloads, so they are a liability, therefore they are padded by one byte to prevent flashing. This solves the problem that the previous caching had. With this change, modifying payloads can be tested without needing to re-build coreboot each time. The cached coreboot builds are also automatically re-built when needed, which is another improvement this time, compared to the last time coreboot builds were cached in this manner. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-07-10tree.sh: delete individual target builds if neededLeah Rowe
Detect when a config changes. This is done even if the entire tree doesn't change. This is already done per-tree if files change, but individual project files don't change. For example, if a grub.cfg changes, the given cached build for that GRUB tree isn't deleted. Same thing if a given U-Boot config doesn't change. This patch fixes a longstanding design flaw of lbmk, making auto-re-builds more reliable. This complements another recent change, that deletes all target builds of a given tree when the tree changes. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-07-10tree.sh: Remove redundant deletionLeah Rowe
Target builds go inside a common directory for the given tree now, which gets deleted, thus deleting all target builds of that given tree. Therefore, the deletion being removed is redundant. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-07-08tree.sh: Place target builds under tree/target/Leah Rowe
as opposed to target/ for example: image the command: ./mk -b u-boot amd64coreboot This would put the U-Boot binaries here: elf/u-boot/amd64coreboot/default/ With this change, they now go here: elf/u-boot/x86_64/amd64coreboot/default/ This solves a problem that existed previously, where you could modify a given tree in a multi-tree project, but cached builds for targets branching separately off of each tree would not be deleted, and thus not re-built. This accomplishes such a result, without needing to further check hashes of individual targets. The latter will still be done, in a future change, because this change doesn't fix another problem: If you change a given config, e.g. targetname "foo" which uses tree "bar", elf/foo/ would not be removed automatically for re-build. So this change only deletes individual target builds when their master tree changes. Where the target and tree are the same, this also means elf/tree/target/ for example: seabios/default would create binaries in: elf/seabios/default/default/ not: elf/seabios/default/ Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-07-08rom.sh: bump pcsx-redux copyright date to 2025Leah Rowe
it's 2019-2025 now, not 2019-2024, because i recently imported new pcsx-redux upstream changes that go up to June 2025. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-07-06lib.sh: remove erroneous break from fx_Leah Rowe
it means nothing here. in context, if a non-zero return is observed, we should not do anything here, which is already the behaviour anyway, except that "break" means nothing since we're not in a loop here. where an error exit should be observed, x_ is used inside the command given for fx_ Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-06-05tree.sh: add sha512 error for check_project_hashesLeah Rowe
handle errors on sha512sum - also handle awk errors inside the mini subshell, and provide overall error handling. we know that the project.hash file should always exist, and always be read no matter what; technically, the find command that proceeds it might not yield any results, but an empty file would then be produced. the edge case of an empty file would have lead to an error beforehand, when configuring the project in function, configure_project(), so we've already got that covered. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-06-05tree.sh: add error check in check_project_hashes()Leah Rowe
when reading old_pjhash, we need to error out where a read error occurs. such an error is unlikely, but could occur under certain edge cases. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-06-05tree.sh: more reliable clean in run_make_commandLeah Rowe
Don't do no-op if it fails; fall back to "clean" instead, and fail if that fails. The no-op was there was not all projects have distclean, but we do intend for them all to be cleaned. We mitigate further error by only running make-clean if a makefile exists. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-06-05inject.sh: add missing semicolonsLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-27vendor.sh: fix bad cbfstool pathLeah Rowe
i overlooked this one in the previous commit there is always one. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-27put coreboot utils in elf/coreboot/TREELeah Rowe
not elf/UTIL/TREE This way, they are automatically deleted when a tree has to be re-built. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-26release.sh: use printf to create version filesLeah Rowe
Don't copy the files directly, because we might be doing this from a work directory that has no files; in this case, generic "unknown" variables are used, without generating any files, so the current logic would produce an error. However, we do need to create those dot files, because we then rely on them for building release binaries. The new logic maintains current behaviour, while fixing this technical edge-case scenario via mitigation. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-26lib.sh: simplify setvars()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-26lib.sh: simplify chkvars()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-26get.sh: simplify fetch_project()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-26get.sh: simplify try_copy()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-26get.sh: tidy up bad_checksum()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-26get.sh: simplify fetch_targets()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-26general cleanup in get.sh and vendor.shLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-26xbmk: rename xbmklocal/xbmktmp variablesLeah Rowe
shorten them Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-26get.sh: consolidate printf statementsLeah Rowe
stick it in git_prep, which both single- and multi-tree projects will use, when downloading git repositories. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-26get.sh: remove redundant printf in fetch_projectLeah Rowe
The following execution will result in another printf that says exactly what is being downloaded. There is no need to inform the user twice about what is being downloaded. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-26get.sh: remove superfluous command in try_git()Leah Rowe
A git-pull is performed immediately after git-fetch. Git-pull already performs git-fetch as a prerequisite. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-26vendor.sh: simplify fetch()Leah Rowe
the checks at the end of the function are mostly superfluous, because bad_checksum() is immediately called just beforehand, and performs the same checks. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-25init.sh: error out if .git/ is a symlinkLeah Rowe
the current behaviour is a relic from the older lbmk design, before recent auditing. the current logic would cause xbmk to continue execution, going into a child process with .git/ being a symlink. The .git/ directory should never be a symlink, because it is extremely error-prone. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-25get.sh: Properly error out if tmpclone failsLeah Rowe
We rely on a non-zero exit on other try_ commands, which works fine there because we then check the file afterward and error out accordingly. For git repositories, we assume that both mirrors are identical and therefore once we get to the first clone attempt, we assume that it must succeed. Therefore, if it does not succeed, we must fail. This fixes a regression I found in testing, where sometimes a failed patching attempt would not result in an error exit, and would therefore result in broken sources being present. In practise, I always very closely watch the terminal when testing xbmk, especially when updating project patches, so we probably didn't introduce any broken sources in practice. Signed-off-by: Leah Rowe <leah@libreboot.org>