summaryrefslogtreecommitdiff
path: root/script
AgeCommit message (Collapse)Author
2023-12-16remove DEBUG handling in lbmk (not needed)Leah Rowe
all it did was set -v in the shell, which doesn't yield very useful results. this is a relic of very old design in the libreboot build system, that is no longer needed. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-12-16fix several shellcheck warningsLeah Rowe
lbmk didn't quote certain arguments in commands, or used ! -z instead of -n, things like that. simple fixes. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-12-11handle errors on exits from subshellsLeah Rowe
most of these are probably redundant, and will never be called, but lbmk needs to be as safe as possible under fault conditions. fail early, fail hard. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-11-08lbmk: don't use status for unconditional returnsLeah Rowe
in cases where lbmk must always return from a function, there are some cases where it relies on non-zero exit status, which in practise is always the case, but may change in the future if the relevant part is modified e.g. do_something && return 0 the proper form is: do_something return 0 also do this for unconditional exits Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-11-06Libreboot 2023110620231106Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-11-06put docs under docs/ in releases (not src/docs/)Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-11-01Libreboot 2023110120231101Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-11-01build/roms: re-add SeaGRUB build supportLeah Rowe
it didn't work in the past, but it does work nowadays; specifically, it only worked with libgfxinit in the past, but not on VGA ROMs. now it does work on VGA ROMs, tested on e6400 and t1650 so it was enabled there. in this setup, a special image is provided where SeaBIOS is the main payload, but it only loads GRUB; nothing else, every. this is called SeaGRUB. this setup is useful in cases where the user only has a GPU that lacks libgfxinit support. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-31build/roms: properly print noblobs rom namesLeah Rowe
when printing the name of the rom being created, it's done before the check to rename based on vendorfiles in target.cfg. this patch fixes that bug. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-31update/release: insert fake x201 me.binLeah Rowe
this makes the build work, for releases. this is not done during regular builds, only releases. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-29add lenovo x201 supportLeah Rowe
note: me6_update_parser needs to be written, similar to me7_update_parser, to generate the partition tables within intel me6 on lenovo bios updates. the current logic in lbmk goes like this: mkdir -p vendorfiles/cache/ and save your factory dump as: vendorfiles/cache/x201_factory.rom the build system has been modified, in such a way as to support extracting me.bin (which is the full one) and then neutering from this. this is done automatically, if the file is present, but you must first insert that file there, which means you'll need a dump of the original boot flash on your thinkpad x201 Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-25include/option.sh: fix i945 bootblock copyLeah Rowe
it wasn't being copied right the roms under elf/ were being copied, but not the ones under bin/ - i need to audit it further for now, i run modify_coreboot_roms from build/roms instead of update/trees so, the ones under elf/ no longer have bootblocks copied. it's only done in bin/ Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-24build/roms: copy base rom again for u-bootLeah Rowe
when building only for u-boot, the current script works just fine. however, when building for other payloads in additional to u-boot, the final u-boot stage fails because other payloads are already inserted via cbfs. when we build u-boot, we do that last because we want u-boot setups to only be u-boot, nothing else. this patch enables qemu x86 to build properly with u-boot. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-2220231021hotfix: replace x_ with err in some places20231021fixLeah Rowe
keymaps weren't being set in keymay.cfg of cbfs, due to use of x_ in the rom script, and x_ doesn't handle quotes or spaces in arguments well. i'm going to remove use of x_ and xx_ (it's in my todo), for next release. for now, hot patch the release. i've gone through and replaced use of x_ with || err, in some places. not just the keymap.cfg command, but others too. in case there are more issues we missed. this commit is being tagged "20231021fix" and i'm using this tag to re-build the 20231021 release. i'll just replace the tarballs in rsync and add errata to the news page announcing the release. all i did was break peoples umlauts, i didn't brick their machines fortunately! very minor bug. anyway, x_/xx_ is a great idea, but sh isn't really designed for that style of programming. i'll go back to using just || err in the next release. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-21Libreboot 2023102120231021Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-20update/release: clean up temporary crossgcc dirLeah Rowe
clean it up after copying the tarballs i really hate how this logic is written, it's clunky but it should work; the only issue is that it's quite slow, and inefficient on use of disk space. however, i've not yet figured out how to reproducible add files to a tarball, once the tarball has been created, and i rely on sorting (of file names) when creating them. it's really not a problem because normal people won't use this script, only i or anyone who wants to test out the libreboot release infrastructure. this script is largely intended to *work* but i'm still annoyed by how crappy it is. i'll fix it after the Libreboot 20231021 release. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-20update/release: confirm vdir path on exitLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-20update/release: copy crossgcc to archiveLeah Rowe
everything downloaded, then tarballed, then built, now crossgcc is downloaded by coreboot. now extract, copy crossgcc tarballs, re-compress. TODO: simply add files to the archive, without re- compressing the whole thing. this is still more efficient than the old way: build everything, then clean and compress, making another build test on the release archive necessary; with this, there is still only one build test per release. with this, and the previous revisions dealing with submodules, the source archives should now be complete. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-20always re-generate .git in lbmkLeah Rowe
in release archives, .git is excluded but the version and versiondate files are included. from these, the git history is re-created with the exact date (but not taking into account timezone, at present). in this way, lbmk will have git history in a release archive. some build systems, like coreboot, prefer that there be git history available, so this is a nice workaround on those build systems. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-20update/release: delete *all* .git and .gitmodulesLeah Rowe
do it using find -exec this is more robust, and it will never need to be maintained over time (famous last words). this is done because now we download submodules for all git projects, so it's hard to predict. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-20include/git: fix error caused by sh idiosyncrasyLeah Rowe
when [] is used right at the end of a function, or certain loops/subshells, some sh implementations will just return a non-zero exit Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-20update/trees: don't run make if mode=fetchLeah Rowe
this fixes a regression caused by a previous revision Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-20update/release .git/*: delete one more level upLeah Rowe
it couldn't hurt Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-20update/release: don't hardcode project namesLeah Rowe
config/git has been re-arranged in a prior revision, ensuring that each file only refers to a main source tree defined within those files. the erstwhile "./build clean all" functionality is now once again possible in lbmk Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-20consistent naming for src/pico-serprogLeah Rowe
don't ever name it rpi-pico-serprog Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-20error handling code cleanup and fixesLeah Rowe
in some cases, use of x_ or xx_ can be error-prone, due to the way $@ is handled; commands requiring quotes, or with funny file names as arguments such as spaces in the file name, or other special characters, can make the x/xx functions break. in those cases, where x/xx must not be used, the commands use || err instead in other cases, use of x/xx is superfluous, and has been removed in some commands. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-20another code cleanupLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-20lbmk: use 2-level directory structure in script/Leah Rowe
as opposed to the current 3-level structure. recent build system simplifications have enabled this change, thus: ./build fw coreboot -> ./build roms ./build fw grub -> ./build grub ./build fw serprog -> ./build serprog ./update project release -> ./update release ./update project trees -> ./update trees ./update vendor download -> ./vendor download ./update vendor inject -> ./vendor inject alper criticised that the commands were too long, so i made them shorter! Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-19minor code cleanup in shell scriptsLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-15update/release: fix missing variable definitionLeah Rowe
i forgot to include option.sh in this script, during previous re-factoring. the cbfstoos variable is now defined exclusively in option.sh, but other scripts can set it to something else. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-15delete include/vendor.sh and merge elsewhereLeah Rowe
move it all to other files where items are used, and not used anywhere else. this reduces the size of vendor.sh. also remove a few redundant variables, or variables that are not meaningfully used. a few items have been moved to include/option.sh Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-15vendor.sh: move some functions to vendor/downloadLeah Rowe
they are the functions only used by the download script, so they don't belong in vendor.sh an include file should only contain variables and functions used by multiple main scripts Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-14coreboot: gru: Use default coreboot treeAlper Nebi Yasak
We don't really need a custom coreboot tree for Chromebooks. I had added one, because at a cursory glance to the available config/coreboot/board subdirectories I had the impression that I should. But upstreams have one tree for every board and I think we should move towards that too. Move the one important BL31 makefile patch into the default coreboot patches, update the gru boards' configs by running savedefconfig in the cros tree and then running olddefconfig in the default tree. Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
2023-10-14update/project/trees: Add flags for more kconfig actionsAlper Nebi Yasak
Add an "-s" flag for "make savedefconfig", "-l" for "make olddefconfig" and "-n" for "make nconfig" to the update script. The first two are mainly useful for U-Boot, to compare our configs to the upstream defconfigs and stay in sync with any upstream changes. The latter is because the ncurses one has a nice "Symbol Search" that can point out the menu entry for a config symbol we know. Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
2023-10-14build/fw/coreboot: Fix misuse of raw u-boot.bin as payloadAlper Nebi Yasak
The "u-boot.bin" file generated by U-Boot builds is a raw binary. When adding payloads to a CBFS, we need to use ELF files with add-payload or manually pass the entry point and load address of the payload binary with add-flat-binary. We primarily use the "u-boot.elf" which gets build with the REMAKE_ELF option, as it also has the necessary device-tree binary that U-Boot usually needs to work. When the option is not set (e.g. for QEMU), we need to use the "u-boot" file which is an ELF. Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
2023-10-14vendor/inject: only build nvmutil if requiredLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-14vendor/inject: simplified file handlingLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-14update/release: remove unused variablesLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-14update/release: fix/simplify mtime handlingLeah Rowe
i wasn't getting the very first line of tar --version, so it wasn't doing the check properly. further sort the files by name within the tar archive. for reliability, don't bother using versiondate anymore: set a *fixed* date, and fixed timezone, to ensure that it works reliably for reproducible tarball creation. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-14update/release: nuke roms using the inject scriptLeah Rowe
This way, the handling of configs is unified into one script, which reduces the possibility of bugs later, and it reduces the repetition of code. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-14build/release: don't include tmp/ in src tarballLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-14update/release: also set timestamp on srcdirLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-14update/release: be more thorough updating timesLeah Rowe
use find and touch, to force all files, directories and links to the desired timestamp (versiondate file) Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-14update/release: use getops OPTARG correctlyLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-13update/release: delete multi-tree upstream reposLeah Rowe
e.g. src/coreboot/coreboot must not appear in a release, because we instead have directories like src/coreboot/default or src/coreboot/cros lbmk resets src/coreboot/coreboot to HEAD, but then resets revisions properly in copies of it therefore, for reproducibility, we must not include src/coreboot/coreboot, src/u-boot/u-boot or src/seabios/seabios into libreboot releases Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-13update/release: if *GNU* tar, use --mtimeLeah Rowe
with --mtime, files added to the archive can be set to a static date (in this case, the unix epoch) the one used here is derived from git commit dates, and it is static; if not being handled in lbmk.git, the versiondate file never changes this is the first patch in a series of patches designed to bring about reproducible builds in libreboot a solution will need to be found, for non-GNU tar implementations, because they did not have an equivalent option according to their manpages. for example, BSD tar implementations. perhaps i could systematically go around changing file dates, on each file, as a fallback behaviour? Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-13build/release: support skipping rom buildsLeah Rowe
pass this argument: -m src by doing this, only the src tarball will be made Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-13update/release: make src tarball first, then romsLeah Rowe
this way, the src tarball is guaranteed to be clean. the downside is that lbmk itself does not currently handle crossgcc downloads, and there may be some stragglers such as third party modules automatically downloaded by certain codebases that libreboot uses. this will have to be audited later (and it will be). Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-13put space in the warning message about elf/Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-13only build cbutils if requiredLeah Rowe
it's sometimes done unconditionally. this change ensures that it is not repeated needlessly. i observed otherwise that cbfstool would be re-built from time to time, even if it was built. Signed-off-by: Leah Rowe <leah@libreboot.org>