summaryrefslogtreecommitdiff
path: root/include/lib.sh
AgeCommit message (Collapse)Author
2025-05-05lib.sh: set -u -e in err()Leah Rowe
Some parts of lbmk set +u +e, to be reset later on under normal conditions upon exit. We must ensure such level of integrity in err() as well. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-04lib.sh: Provide error message where none is givenLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-04lib.sh: stricter xbmk_err check in err()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-04lib.sh: simplify err-not-set handlingLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-04lib.sh: Add warning if x_ is called without argsLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-04lib.sh: simplify err()Leah Rowe
Rely once again on err_, but still explicitly add an exit just below, in case I made a mistake one day. err() is essentially a trap that triggers in case I mess up an error function, so that it doesn't reliably exit. So, the idea is that everything calls err(), and err() is almost never modified, or modified very carefully. If error exits were ever broken, the result could be quite unpredictable, so lbmk has very strict error handling, and great care is taken to ensure that it does reliably exit. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-04lib.sh err: add missing redirect to stderrLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-04lbmk: MUCH safer err functionLeah Rowe
Don't directly call a variable. Call a function that checks the variable instead. The new err function also checks whether an exit was actually done, and exits 1 if not. If an exit was done by the given function, but the exit was zero, this is also corrected to perform an exit 1. This fixes a longstanding design flaw of lbmk. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-04lib.sh: rename errx to xmsgLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-04lib.sh: Make x_ err if first arg is emptyLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-04lib.sh: Make err_ always exit no matter whatLeah Rowe
Always certainly redundant, since if -u -e isn't set, it'll continue to exit anyway. However, we want to be pedantic about this, since the safety of lbmk relies entirely on this function NOT misbehaving. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-04init.sh: move non-init functions to lib.shLeah Rowe
these were missed in a previous cleanup Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-03mk: Allow use of x_ on prefix functionsLeah Rowe
Use this for the sha512sum command, on the main mk script at the function check_project_hashes(). Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-03lib.sh: redirect find errors to /dev/nullLeah Rowe
this silences confusing error messages that the user sees on the screen, that are actually benign, and it will thus reduce the number of people who ask questions on #libreboot irc Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-03lib.sh: Fix bad touch commandLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-03lib.sh find_ex: explicitly create the tmp fileLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-03lib.sh: add fe_ which is fx_ but err on findLeah Rowe
In the mk script, we need fx_ to not return errors on the find command, since it's searching a bunch of directories where some of them may not exist. All other instances where fx_ is used, must return an error if the directory being searched doesn't exist. For this, fe_() is introduced, which does the same as fx_ but with this much stricter check. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-03lbmk: unified execution on find commandsLeah Rowe
We have a lot of places in lbmk where the output of find is used, and then some function is executed on the result. This is messy, and bloats several of these functions. Now this is unified, into a new function: fx_ What fx_ does is execute a given function, for each result found, with the arguments for a find command appended. For example: find -name ".git" If you wanted to do: foo "$arg" Where "arg" is a search result from find, and you wanted to execute "foo" on each one, you would do: fx_ foo -name ".git" The find utility does have an -exec feature, but I've found that it only works for executables, not functions. fx_ does not return errors, so "foo" in this example would have to do its own error handling. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-02lib.sh: Simplify rmgit()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-02lib.sh: support multiple arguments in remkdir()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-02lib.sh: simplify remkdir()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-02move x_() to lib.shLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-02init.sh: move setvars/err_ to lib.shLeah Rowe
these functions make more sense in lib.sh i made mk link lib.sh first, so that the functions on init.sh can still use them. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-29lib.sh: Provide printf for mktarballLeah Rowe
Just to let the user know lbmk hasn't died. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-26lib.sh: move _ua to the xbmkget functionLeah Rowe
don't declare it globally, because it's only used here Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-26move variables out of init.sh to othersLeah Rowe
move them where they are used, or if they are used in many places, move them to lib.sh Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-26lib.sh: rename vendor_checksumLeah Rowe
rename it to bad_checksum, so that its use makes more sense Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-26lib.sh: move singletree() to git.shLeah Rowe
it is primarily used there, and then in mk, but only after git.sh is sourced. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-26lib.sh: move cbfs() to rom.shLeah Rowe
it is only ever used there, so move it there Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-26re-split include/init.sh to lib.shLeah Rowe
move non-init functions to lib.sh Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-26rename include/lib.sh to init.shLeah Rowe
this is in prep for the next change, where non-init functions will be moved to another file, again named include/lib.sh Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-26lib.sh: introduce more top-down function orderLeah Rowe
a lot of init code was handled outside of any function. the coding style used in the rest of the build system has now been introduced, with xbmk_init being the main function. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-26mk: simplify main()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-26lib.sh: use realpath to get sys python on venvLeah Rowe
In the previous revision, I make hardcoded use of /usr/local/bin and /usr/bin as search locations, instead of relying on PATH, when the user has a python venv, because in those cases, we cannot rely on PATH so we use a python command to detect the venv and then force use of the normal system path for python. However, there's no guarantee that the real Python will indeed live at these locations. For example, some distros like Nix or Guix will use many locations for different versions of a given package, and it's for the birds as to what given package version the user might be running. Therefore, this patch retains that current hardcoded assumption of /usr/local/bin and /usr/bin but *only* as a fallback solution, instead checking realpath first. The "realpath" command isn't technically POSIX standard, but in practise it is available on GNU coreutils, Busybox, and the various BSD userlands. I could perhaps *import* a realpath utility, and use that, but this should be fine. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-26lib.sh: Force use of System Python to prevent hangLeah Rowe
If the user has a virtual environment, the current logic will cause lbmk to hang. A useful workaround is to force use of the direct path to the system binary of python. This works by detecting a virtual environment first, and deferring to the old behaviour if no venv is found. If one is found, then it will not rely on PATH, but instead only search the standard locations /usr/local/bin and /usr/bin. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-23lib.sh: further condense the python checkLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-23lib.sh: further simplify the python checkLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-23lib.sh: condense the python checkLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-23lib.sh: simplify mk()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-23lib.sh: simplify cbfs()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-23lib.sh: simplify the python checkLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-22lib.sh: add missing copyright yearLeah Rowe
alper made a fix to this file a few hours ago, but forgot to update the copyright header i'm doing it for alper, as a courtesy Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-21lib.sh: Fix python3 detection when 'python' is python2Alper Nebi Yasak
Properly set $pyver to "3" when we detect we can use python3. In the following version checks, use the $python we detected instead of a 'python' from PATH because the latter might be a python2 while still co-existing with a python3. Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
2025-04-18lib.sh: perform root check even earlierLeah Rowe
initialising variables, setting PWD, setting version, this is all unnecessary before the root check, because the dependencies commands use none of these. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-18lib.sh: tidy up opening logic (put it together)Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-18lib.sh: do root check before python checkLeah Rowe
we don't need python before the root check principle of least privilege Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-18lib.sh: simplify mktarball()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-18lib.sh: fix missing s/TMPDIR/xbmktmpLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-17lbmk: don't handle TMPDIR directlyLeah Rowe
lbmk creates TMPDIR as /tmp/xbmk_*, but it's theoretically possible that something could re-export it by mistake. this change retains the same initialisation, but further use is now via a new variable "xbmktmp", that stores the value of TMPDIR upon lbmk's initialisation of it. this reduces the chance of such a bug in the future, as described above, so it is a preemptive/preventative fix. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-16lib.sh mktarball: stricter tar error handlingLeah Rowe
There was no error handling, *at all*, on the actual tar command, due to the lack of set -o pipefail, which we cannot rely on in sh. The x_ wrapper can be used in this case, as a mitigation. Signed-off-by: Leah Rowe <leah@libreboot.org>