-
-
Notifications
You must be signed in to change notification settings - Fork 203
Description
@daym @Thrilleratplay @osresearch @flammit @MrChromebox
Historically, Heads is built with musl.
It then changed from musl to musl-cross-make for more portability of produced build toolchain.
Then with coreboot 4.12 being integrated for newer boards, CI broke for coreboot 4.8.1 boards.
Patches were integrated in each coreboot so coreboot is built against musl-cross-make, neglecting coreboot's own musl-cross, well tested for each release. That was good. Until boards tried to use coreboot's integrated measured boot patches and vboot+measured, since musl-cross-make toolchain doesn't build IASL nor gnat by default, and those boards failed compilation with alignment errors.
I think it was an error to move away of coreboot being built by its own maintained musl-cross stack and patches from each release.
I still think its not a bad idea to have all the other modules beside coreboot being built with musl-cross-make.
And I think the path we should take, let it be nixos or guix-buildstack or coreboot-sdk(really not convinced) should try to replace musl-cross-make toolchain (versions selectible inside of docker image if needed), but not necessarily replace coreboot's musl-cross. That base docker image could be reused with statements specifying changes of buildstack requirements if needed (those statements being declared in CI where/when needed), or the nixos/guix-buildstack layer could be deployed on top of any linux end-user chosen OS, where the CI could spin different base docker images, retrieve nixos/guix-builstack layer and CI statements clearly declare what is needed. In that way, Heads could finally leave host tools changes, which is the neglected part of reproducible builds where the moto is "If we can build the same outcome, we don't care about replicating the buildstack in a reproducible way". Here again under Heads, we see that it comes with a lot of historical problems with added checks required to be able to have the good make version, the good gawk version and the growing number of questions and issues opened by users thinking they can build Heads on top of their favorite OS and failing.
I'm attempting to revert those side changes attemtping to build the whole Heads ROM on top of musl-cross-make, that were made at time of coreboot 4.12 integration under Heads in the goal of being able to have vboot boards and vboot+measureboot boards and measured boot without VBOOT being built and be able to move on.
Local individual builds worked (functionalities untested) and i'm now building for all current and to be included boards under https://app.circleci.com/pipelines/github/tlaurion/heads/652/workflows/624bc858-1296-425a-82bd-9e875b3236e6/jobs/700 with my associated testing branch https://github.com/osresearch/heads/compare/master...tlaurion:9element_vboot_rebased?expand=1
Thoughts welcome.