linuxboot / linuxboot/heads

Embed blobs downloading into board configurations (based on t440p work)

Open
#1,335 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Makefile
Stars
1.6k
Forks
211
Avg merge
4d 21h
Merged PRs (30d)
6

Description

[t440p board inclusion](https://github.com/osresearch/heads/pull/1282) brought interesting new way of downloading needed blobs prior of building final coreboot step of a board makefile per global Makefile config.

Thanks to @rbreslow, the t440p introduced an old dream of having boards being able to self download its needed blobs directly from board configuration prior of building final coreboot stage which requires those blobs to be in place. Change was introduced because t440p requires an additional coreboot util to be built to be able to extract haswell mrc blob, therefore needing coreboot to be extracted, patched and then that util build for host for the host to be able to use that tool to extract the archive downloaded and extract the needed blob prior of building coreboot to use it.

As of now, xx20 and xx30 blobs are downloaded and extracted in CircleCI prep step, making the blobs cached once to be used by all boards being built after.

This will need a bit more thought prior of refactoring CircleCI config and boards configs to include same concept.
This is good for UX: no more need to do anything, a board will download a place blobs in place.
In CI: this means the blobs will be redownloaded musltiple times if not part of a workspace cache passed along, meaning that:
- x230-hotp-maximized would need to be built first (as of now) to have coreboot buildstack, linux kernel and all modules built once and passed along to xx30 but then
- xx20-hotp-maximized boards should probably be built after x230-hotp-maximized and create a workspace cache to be passed along other xx20
- but doing so would decrease parallelism of CI builds to reduce the number of times Lenovo/mirror (to be defined, archive.org?) will be hit for each board being built.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the linked t440p pull request and the CircleCI prep step, then compare how xx20 and xx30 blobs are downloaded and extracted. Done means board configurations handle their required blobs directly while CI caching and build ordering address repeated downloads and reduced parallelism.

Written by the indexing model from the issue text.

Assessment

Domain
build-system, ci-cd
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.