summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-09-04move me7_update_parser.py to util/Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-04merge config/ and resources/Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-04blobs/download: don't handle ifd/gbe filesLeah Rowe
they weren't even handled at all, but they were referenced under coreboot configuration they don't need to be handled. lbmk simply includes these files. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-04move ifd/gbe configs into config/ifd/Leah Rowe
it doesn't really make sense for them to be under blobs/ - nominally, they are blobs, but they are well-understood data files containing config data, that is easily parsed by tools like ich9show or ifdtool (and tools like bincfg or nvmutil) blobs/ has been re-purposed: this directory no longer exists in lbmk, but it is created (and on .gitignore) when needed, by blobutil thus, the blobs/ directory shall only contain vendor files, and only those files that libreboot scrubs from releases. therefore, build/release/src can (and has been) simplified; it currently copies just the ifd and gbe files from blobs/, selectively, and this logic is quite error prone, requiring maintenance. now, the build/release/src script simply copies config/ (which only ever contains distributable files) and entirely ignores the blobs/ directory the blob download script already creates the required directory, except for the sch5545 download; this is now fixed lbmk code size is slightly smaller, due to this patch Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03run make oldconfig on coreboot/default mainboardsLeah Rowe
the resulting changes are what i will push. this prevents the coreboot build system from asking for user input. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03ich9m mainboards: use pre-assembled ifd/gbe filesLeah Rowe
This cuts down on build time, and it will allow libreboot to remove large chunks of code. these ifd/gbe configs are just binary-encoded config files, in a format well-understood. they can easily be opened up and displayed, using ich9show or ifdtool, and manipulated by these tools; bincfg can generate them from scratch, and nvmutil can change mac addresses, for example. so, do this and remove from lbmk the following: * ich9utils (which contains ich9gen) - not needed anymore * code in lbmk for handling ich9gen and insertions; the coreboot build system is now used, for this same purpose, so remove such code from lbmk this results in a massive code size reduction (thousands of lines) in lbmk; smaller when only looking at the build system, but much larger when you consider that ich9utils is also removed (about 3k sloc) Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03add ich9m ifd/gbe filesLeah Rowe
a follow-up patch will make use of these, rather than ich9gen, and ich9gen will be deleted. these files were in fact generated *by* ich9gen. coreboot has ifdtool and bincfg, the latter of which can generate both ifd and gbe files for ich9m. that, and nvmutil which is part of libreboot, can change gbe mac addresses. i was going to replace ich9gen with a script that would run bincfg, ifdtool and nvmutil, to greatly reduce code size, because ich9gen is about 3k sloc. however, in practise we would always generate the same ifd config, and basically only change the mac address if that's what the user wants; nvmutil can already do that just fine. so, just include the binaries directly. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03build/release/src: copy e6430 ifd/gbeLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03build/rpi-pico-serprog: better error handlingLeah Rowe
use a subshell for changing directory, and use more verbose error messages under fault conditions Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03fix rpi-pico builds when running it twiceLeah Rowe
it needed to be make-cleaned Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03fix memtest86plus download/buildLeah Rowe
the mkdir command in update/project/repo, added for pico-pi integration, broke a bunch of other downloads. the fix is a bit of a hack but it should hold for now. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03Merge pull request 'Add Dell Latitude E6430' (#124) from ↵Leah Rowe
nic3-14159/lbmk:e6430 into master Reviewed-on: https://codeberg.org/libreboot/lbmk/pulls/124
2023-09-03Add Dell Latitude E6430Nicholas Chin
This was only tested on the iGPU model, though a dGPU model does exist. The vendor firmware used a 16KiB gbe.bin, which was modified with a random MAC address as well as shrinking it to 8KiB. As with the E6400, GRUB doesn't like the way the EC implements the keyboard controller and thus GRUB payloads are disabled at this time. Suspend does not currently work, and this is believed to be due to the EC controlling the DRAM reset gate which is required to prevent DRAM from being reset on resume. With some tweaks, the e6400-flash-unlock utility also works on this system, though both flash chips can be accessed through removal of only the keyboard. Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com>
2023-09-03Merge pull request 'Less cat abuse' (#123) from Riku_V/lbmk:cat into masterLeah Rowe
Reviewed-on: https://codeberg.org/libreboot/lbmk/pulls/123
2023-09-03Less cat abuseRiku Viitanen
More than 90% of cats were thus terminated. read (shell built-in) is better at reading, and dogs are better pets. Signed-off-by: Riku Viitanen <riku.viitanen@protonmail.com>
2023-09-03switch repo links for pico-serprogLeah Rowe
use official libreboot repos the codeberg repo makes reference to riku's repo Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03Merge pull request 'Automate pico-serprog builds' (#122) from ↵Leah Rowe
Riku_V/lbmk:mkserprog into master Reviewed-on: https://codeberg.org/libreboot/lbmk/pulls/122
2023-09-03automate rpi-pico serprog buildsRiku Viitanen
./build rpi-pico serprog build bin/serprog/rpi-pico-serprog.uf2 Signed-off-by: Riku Viitanen <riku.viitanen@protonmail.com>
2023-09-03build/release/src: only clean kbc1126 if it existsLeah Rowe
the way this script works, it only copies what was built, but it currently operatios as though coreboot/default always exists, and then cleans the kbc1126 util this patch fixes such buggy behaviour Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03unify build/clean scripts: use handle/make insteadLeah Rowe
The -c option is added for distclean, and -x for crossgcc-clean, in handle/make/config about 100 sloc removed from lbmk Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03build/release/*: use -T0 in xz, for multithreadingLeah Rowe
The -T option specifies how many threads xz shall use. The -T value of zero shall dictate that xz use so many threads as there are CPUs, on the host system. This will probably speed up the release process a bit. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03don't support ucode removal on untested targetsLeah Rowe
i have in fact tested whether many of these targets (ivy, sandy and haswell on intel) boot without microcode, and many do, but it's not as well tested the older targets like i945, x4x, pineview and gm45 are well-tested without microcode; ditto fam10/15h amd. lbmk supports providing roms with and/or without microcode. for the targets touched in this commit, lbmk now only provides images with microcode included by default. manual removal (with cbfstool) is still possible, if you want to do that. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-02coreboot/e6400: support nvidia modelsLeah Rowe
The same ROM images that you flash on Intel GPU variants, are now flashed on Nvidia models. The same ROM will work on both. If an Intel GPU variant is present, libgfxinit is used, and the VGA ROM is used if an Nvidia GPU variant; however, release ROMs will scrub the nvidia option ROM, so release ROMs will only work on Intel GPUs unless you run the blobutil inject command. I decided to no longer have this under WIP, but to put it in master. The issue with it pertains to video drivers, which is not Libreboot's problem. Nouveau crashes under Linux, so use "nomodeset" if it does. The "nv" drivers in BSD systems work very well. The nvidia model of E6400 isn't recommended for other reasons, namely: poor thermal cooling (thermal pad on the GPU) and that Nvidia GPU doesn't get very good performance on any libre drivers anyway. The Intel GPU variant is better, in terms of power efficiency and software support; the intel variant also works with native graphics initialisation in coreboot. This board port already only enables SeaBIOS, which will simply execute the VGA ROM. Blobutil already supports reading the config, detecting that a VGA ROM is needed, because that part of the WIP E6400 branch was already merged in lbmk master. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-02handle/make/config -m/-u: actually copy configsLeah Rowe
they weren't being copied back, after running the make command. i overlooked this when testing in the previous optimisations, because i only tested building, not modification or updating of configs Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-02handle/make/config: properly handle cbutilsLeah Rowe
it wasn't being checked for, to run cbfstool. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-02handle/make/file: fix uefitool buildsLeah Rowe
the current check only worked if it had already been built, when checking for the Makefile however, running this during build/release/src caused problems, hence the current check so: perform the same check, but as a fallback for cmake failing (and if that check fails, only then will err be called) Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-02handle TMPDIR from include/export.shLeah Rowe
it looks a bit cluttered just sitting there in the main script. make it an include. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-01don't do cmake on uefitool if the Makefile existsLeah Rowe
nasty little hack to fix another nasty little hack, which i call script/build/release/src Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-01build/release/src: bugfix: actually copy cb/ub/sbLeah Rowe
coreboot, seabios and u-boot were not being copied at all Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-01build/release/src: copy handle symlinkLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-01build/release/src: remove Makefile referenceLeah Rowe
lbmk never needed a makefile, because the build system is all shell scripting; the former makefile simply called those scripts, in a way that was mostly superfluous build/release/src was still trying to copy it, so let's remove it from that file Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-01build/release/src: fix bad variable referenceLeah Rowe
it's i, not 1 Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-01update build/release/src based on lbmk changesLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-01update the fetch scripts themselvesLeah Rowe
the fetch scripts call themselves, for dependencies Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-01build/coreboot/utils: exit 1 if target.cfg missingLeah Rowe
it was previously trying to "continue", despite not being inside a loop. the correct instruction would have been "return 0", but then I thought it'd be better to err here Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-01handle project downloads in main lbmk scriptLeah Rowe
this means the unified /tmp handling is now provided for in both the former "fetch" and "fetch_trees" script, which are now (respectively): ./update project repo ./update project trees if the fetch scripts weren't cleaning /tmp before, they now are, because lbmk handles it Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-01lbmk script: always clean up /tmp filesLeah Rowe
export TMPDIR to scripts, and handle it in a way that we know lbmk set it delete it at the end of the parent process, but not child processes; when the lbmk script calls itself, child processes will not delete the tmp directory. some scripts in lbmk weren't cleaning up the tmpfiles they made, and they still don't, but this mitigates that. now in follow-up commits, i can start cleaning up those scripts too. not handled by this patch: if the user cancels lbmk (ctrl+c), the tmp directory will still be there. this too will be handled, in subsequent patches Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-31only remove microcode in build/release/romsLeah Rowe
libreboot's build system, lbmk, *is* available to use in releases aswell (use the _src tarball), but it is mostly intended for development, in lbmk.git well, there's not much point wasting time / disk space generating no-microcode roms within lbmk they should be generated only at release time, alongside the default ones this patch implements that, thus speeding up the build process and saving disk usage during development the other alternative was to add a new option in build/boot/roms, -m, that would opt in to removing them, but this is extra complexity for something that is ill advised and only provided to appease certain people Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-31move build/boot/rom moverom to handle/make/configLeah Rowe
most of these steps do not need to be repeated, per image. move it into handle/make/config, so that the steps are performed on files that go under elf/coreboot (this will save on build time). the logic for handling 4MB ROM images on sandy/ivy was unused, and has been removed. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-31build/release/roms: fix syntax errorLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-31re-add /dev/null redirect on . ${1}Leah Rowe
the error messages that it shows are benign, but users see them and worry that something went wrong this patch reduces the number of people asking pointless questions on irc Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-29build/release/src: copy the include/ directoryLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-29grub: all one grub.elf containing keymaps and cfgLeah Rowe
new behaviour: * grub.cfg and grubtest.cfg no longer inserted to cbfs * grub.cfg in memdisk instead * grub.cfg in memdisk defers to cbfs/grub.cfg if added (not added by default, anymore) * does not defer to grubtest.cfg even if available * only shows link to grubtest.cfg if available, as a menuentry item keymaps: if /keymap.gkb exists in cbfs, it uses that by default, but by default this isn't added. instead, it looks for a file named keymap.cfg and sources that, which then sets the keymap to one that is located under memdisk. this file is inserted for each rom, per layout. if keymap.gkb and keymap.cfg both absent, grub.cfg in memdisk shall defer to usqwerty as the default keymap grub_scan_disk: grub.cfg looks for cbfs file "scan.cfg" and sources that if found, which will be inserted with the string: set grub_scandisk=setting_goes_here (based on target.cfg, generated by build/boot/roms automatically). If no scan.cfg is found, it defaults to "both" The "background.png" file remains unchanged, and present in CBFS, used by grub.cfg if present (and it is, by default) This change actually *saves* space in CBFS, due to compression, and means that the grub.cfg is now compressed heavily. This is also safer, because now the user overrides grub.cfg by adding it, and they can still add grubtest.cfg for testing first. If they accidentally delete both configs from cbfs, Libreboot will fall back to the one in memdisk which would presumably not be deleted. This also means that lbmk can now more easily be used by other build systems, that just want the GRUB part to re-use in their own project. For example, people who want to build custom coreboot images without using Libreboot's build system. This change also *speeds* up the build process considerably, on the parts where ROM images are copied. It's less than half a second now, whereas previously it took about 30-45 seconds for ROM images to copy, because of grub.elf being re-added in each ROM via cbfstool, where compression is used; I believe the compression part is what caused slowness. Much, much faster, more versatile builds. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28lbmk: run ./build dependencies *before* root checkLeah Rowe
After that, do not allow anything to run if the user is root. This logic flow is more robust, and reduces the chance of bugs in the future. We must not permit the user to run lbmk as root. Running it as root *is* possible, by just removing the check, and wily enough users will do that, but this behaviour in lbmk is good practise because it prevents accidentally running as root. If the user went into root just for installing dependencies, they might accidentally forget to switch back. This is a safeguard against such folly. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28build/boot/roms: fix bad variable assignmentLeah Rowe
this was an oversight, in a previous commit. there was a space, between variable name and the equals sign, and then another space, so it was trying to *execute* the rom Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28dependencies/ubuntu2004: update based on debianLeah Rowe
ttf-unifont instead of fonts-unifont Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28fix: don't require git config for dependenciesLeah Rowe
this was an oversight on my part. the script cannot be run as root, except to install distro dependencies e.g.: as root: ./build dependencies debian however, ./checkgit was being run *before* checking that, making it required to set git config as root. this patch fixes that bug. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28build/boot/roms: simplify ich9m ifd handlingLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28build/boot/roms ich9m ifd: use fast dd commandLeah Rowe
bs=block size and count=1, rather than bs=1 and count=block size Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28build/boot/roms: use the new coding styleLeah Rowe
lbmk's new style is inspired by the bsd coding styles: top-down logic, main simplified to a skeleton showing overall program structure, variables well-defined, rigorous (yet deceptively simple) error checking. this was attempted before, but caused problems; coreboot wasn't being cleaned properly, and rather than audit it, i simply reverted this back to the old style. this is actually attempt number 5, because i made 3 more attempts between then and this one. i've build-tested this using "./build boot roms all" (which is what b0rked on the first attempt, months ago). it should be stable(tm). the code is much nicer to read / work on now. this is the beating heart of lbmk. get this script wrong, and you break all of libreboot. Signed-off-by: Leah Rowe <leah@libreboot.org>