summaryrefslogtreecommitdiff
path: root/build
AgeCommit message (Collapse)Author
2023-12-23lbmk scripts: general code cleanup/optimisationLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-12-23set version/projectname properlyLeah Rowe
lbmk used to set version/versiondate directly in err.sh, but now it's handled there by a function, which is called by the main script. script/update/release hadn't yet been adapted. the only change necessary is to call check_project() script/update/trees also makes use of it script/build/roms is using "projectname" Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-12-22build: simplified TMPDIR handlingLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-12-19build initialise_command: simplify handlingLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
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-11-09fix typo in help textLeah Rowe
say whot? Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-11-09build: set --author when running git initLeah Rowe
set it to a generic name: lbmk <lbmk@libreboot.org> Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-11-08lbmk: support showing the revision in help textLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-11-08build: don't generate version/versiondate as rootLeah Rowe
don't run it directly at the bottom of err.sh, because otherwise the version and versiondate files will be generated when running "./build dependencies distroname" which would then create these files, but as root because the user runs that specific command as root. the rest of lbmk, for any other command, prevents use of the root account, so running check_project during "./build dependencies distroname" will cause the build system to fail (because as non-root user, the user will run lbmk and it will try to update those files, and fail because it can't, due to lack of permissions) this patch fixes the issue, by only generating those files if the user is *not* root Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-11-01export LC_COLLATE=C and LC_ALL=CLeah Rowe
this is to ensure alphanumeric sorting, with capital letters first; and numbers before letters. we always relied on this, but until now lbmk would just assume the host is configured this way. this fixes a longstanding design flaw in lbmk. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-20move git_init to the main build scriptLeah Rowe
also, don't use x_ because it totally b0rks on these commands. handle exit status directly. 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-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-10build: fix bad command in help textLeah Rowe
lbmk was massively re-written, very recently. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-07unified projectname/version/versiondate handlingLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-07put include/export.sh in build scriptLeah Rowe
remove include/export.sh it's not a lot of code, and build is the only file that uses it Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-07rename blob/ to vendor/Leah Rowe
in the future, we may start downloading files that aren't blobs, such as mxm port configs (on mainboards that use MXM graphics) this directory will contain all of those files generally change the language used, across lbmk, to make use of "vendorfile" instead of "blob" Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-07put all src downloads under src/Leah Rowe
build/release/src was partly re-written to accomodate this memtest86plus was patched to have a central Makefile, and lbmk modified to use that, rather than mess with build32 and build64. the central Makefile just builds both targets or cleans both targets Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-06rename build/firmware/ to build/fw/Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-06mv build/fw/serprog,build/boot/roms build/firmwareLeah Rowe
./build boot roms is now: ./build firmware coreboot ./build fw serprog is now: ./build firmware serprog Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-06remove build symlink, rename lbmk to buildLeah Rowe
re-link update to build build/update are the only two build modes now i'm on a crusade to reduce the number of files and directories, and reduce the number of source lines, while not reducing functionality Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-05-27unify these scripts: build, modify and updateLeah Rowe
unify them, by turning them into symlinks pointing to a generic script named lbmk the script named lbmk is a fork of the script named "build", which just checks argument 0 and adapts accordingly all of these core scripts had the exact same overall logic, and they are thus compatible Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-05-27Remove most of Ferass's lbmk contributionsLeah Rowe
The primary purpose of my intense auditing has been to improve lbmk's coding style and fix bugs but there is a secondary purpose: know precisely who owns what, because I want to re-license as much as possible of lbmk under *MIT*, instead of the current GNU licensing. MIT is vastly superior, because it grants *actual* freedom to the user, permits *sublicensing* and it is vastly more compatible with other GPL combinations; for example, MIT license is compatible with GPL2-only whereas lbmk's current mix of GPLv3-or-later and GPLv3-only is legally incompatible with GPLv2-only. Re-licensing under MIT will most likely result in more contributions to Libreboot's build system in the future, especially as it will attract a lot more commercial interest. Contrary to the popular arguments, copyleft is a liability to the free software movement and results in less code being written; in practise, permissively licensed code gets more public contributions, including from commercial entities, even if companies can theoretically make something proprietary out of it (in practise, anyone inclined can just use the upstream and proprietary forks almost always die). Copyleft propaganda is fundamentally flawed. See: <https://unixsheikh.com/articles/the-problems-with-the-gpl.html> Anyway, I've been doing a combination of: * Seeking permission from other copyright holders, for re-licensing * Deleting, or moving, other contributions; for example, splitting certain contributions into separate files so that originally modified files become unencumbered. This latter solution is a result of *code cleanup* arising from the audit. For Ferass's contributions, I opted to seek *permission*, and permission was denied. In full compliance with this legal imperative, I'm acting accordingly; this commit removes all of Ferass's changes that converted lbmk to posix shell scripts, thus removing his copyright on the affected files, bypassing his authority entirely. Therefore, lbmk is largely now bash-dependent. In practise, nobody is going to use anything other than a GNU system to build Libreboot, because many projects that Libreboot makes use of rely heavily on GNU; for example, coreboot's build system makes heavy use of GNU-specific extensions in *GNU Make*, and likely contains many bashisms. Of course, Libreboot also compiles GNU GRUB. I would much rather have MIT-licensed Bash scripts than GPL-licensed posix SCL scripts. This reverts the changes from Ferass El Hafidi, for the following commits, with some exceptions: * 7f5dfebf7d37c56d9c7993aaa17c59070cb5aec9 * f787044642236917c9c4dbcaa48a6b0648097db0 Exception: download/mrc not reverted, because that was already a fork of an existing script under coreboot's build system, and their script was GPLv2. i cannot/will not re-license this file (ergo, 7f5dfebf7d37c56d9c7993aaa17c59070cb5aec9 change remains intact, on this file) resources/scripts/build/boot/roms_helper, these changes have been kept: * 7e6691e9 - Add ARMv7 and AArch64 support * dec2d720 - add myself in the build/roms_helper script (added 2021 copyright for the change below) * b7405656 - Workaround for grub's slow boot ^ these changes will be re-factored, splitting them out of the file into a new file. This will be done in a future lbmk revision. (in some cases, it makes sense to keep a change but split it, allowing the main file to be re-licensed without the change in it) This is part of a much larger series of licensing audits. It's likely that lbmk will be posix-compliant (in its shell scripts) again some day, because I'm planning to rewrite most of these scripts (the ones modified in this patch), and many of them (e.g. individual download scripts) are subject to future deletion in a planned overhaul of the download logic for third party projects. In addition: these changes are being kept (no attempt to re-license them will be made): * cff081c6 - Fix grub's slow boot (1 year, 5 months ago) <Vitali64> * 4c851889 - Add macbook*1 16mb configs (1 year, 6 months ago) <Vitali64> Ferass's work that remains will be split into dedicated files containing them, where feasible. In the case of grub.cfg (for GNU GRUB), I don't care because it's a script for an engine (GRUB shell) that's under GPL anyway, so who really cares about MIT license. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-05-18use env in shell scriptsLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-05-18build: cleaner coding styleLeah Rowe
main() on top top-down logic reduced indentation Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-05-18build: reduce code to less than 80 chars per lineLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2022-12-27Do not rely on bashisms and behaviour undefined by the POSIX specification.Ferass 'Vitali64' EL HAFIDI
By making lbmk fully POSIX-compliant, it will be easier to port lbmk to other systems implementing POSIX such as Alpine Linux and FreeBSD. Signed-off-by: Ferass 'Vitali64' EL HAFIDI <vitali64pmemail@protonmail.com>
2022-03-16added workaround for git credentialsshmalebx9
this is cherry-picked from osbmk. the cherry-pick was performed by i, leah rowe. this is adapted from shmalebx's patch there, in osboot specifically, these patches from osbmk are being imported: 327a39ef058d5385bf8c1a1b09bac8db6a51b016 5139ad4be4df1835ce154f39161eef4f7c31ee1a
2021-06-03also change the build and update scripts to env bashLeah Rowe
2021-05-19build: don't run the versioncheck script if running ./build dependenciesLeah Rowe
The "dependencies" script are to be run as root. Without this fix, root will create the version/versiondate file and then the rest of the build system will break due to lack of root privilege.
2021-05-18libreboot!Leah Rowe
this is forked from the "libre" branch in osboot, which is itself a libre, deblobbed fork of osboot, a blobbed up fork of libreboot libreboot needed to be purged clean. this is the new libreboot development repository. the old one has been abandoned