Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
d36ab74
Makefile: Auto-clean board build directories when coreboot canary cha…
tlaurion Dec 4, 2025
6a0d009
modules/coreboot + config/coreboot-novacustom* config/coreboot-nitrop…
tlaurion Dec 4, 2025
3711051
config/coreboot-novacustom* : put in defconfig, review needed changes…
tlaurion Jan 4, 2026
cf91d01
config/coreboot-novacustom* : put in oldconfig, no manual change
tlaurion Jan 4, 2026
3125137
config/coreboot-novacustom* : verify changes in oldconfig, first pass…
tlaurion Jan 4, 2026
11c2ce6
config/coreboot-novacustom* : verify changes in oldconfig: bug in def…
tlaurion Jan 4, 2026
f82d7e8
config/coreboot-novacustom* : verify changes in oldconfig: bug in def…
tlaurion Jan 4, 2026
61edf49
config/coreboot-novacustom* : verify changes in oldconfig: brick v560…
tlaurion Jan 4, 2026
3fef91a
config/coreboot-novacustom* : verify changes in oldconfig: CMOS_ALTCE…
tlaurion Jan 4, 2026
1a1b9de
coreboot-dasahro: add https://github.com/Dasharo/coreboot/pull/847 on…
tlaurion Feb 17, 2026
665054b
WiP EC support
tlaurion Feb 23, 2026
dd634e1
Bump nix develop based docker image to v0.2.8
tlaurion Feb 23, 2026
993e094
docker/DOCKER_REPRO_DIGEST .circleci/config.yml: bump to v0.2.8 docke…
tlaurion Feb 23, 2026
e72f3fb
Bump nix develop based docker image to v0.2.9
tlaurion Mar 12, 2026
baf0910
Pin docker image to digest for v0.2.9
tlaurion Mar 12, 2026
96d9d15
Changes vs https://github.com/linuxboot/heads/pull/2062 to build EC o…
tlaurion Mar 12, 2026
b9a081f
Dasharo: put coreboot config in defconfig to show settings that neede…
tlaurion Mar 29, 2026
4030da1
Dasharo: split coreboot into separate forks with shared toolchains
tlaurion Apr 7, 2026
c625b77
Revert: Dasharo forks build their own toolchain
tlaurion Apr 7, 2026
7794cf2
Add documentation about Dasharo toolchain compatibility
tlaurion Apr 7, 2026
621c8df
Fix V56 FSP header compatibility by including both paths
tlaurion Apr 7, 2026
cf27289
Revert V56 FSP dual-path attempt
tlaurion Apr 7, 2026
e4b88f8
Restore legacy coreboot-dasharo for v56 boards
tlaurion Apr 7, 2026
344878c
coreboot configs : save in oldconfigs to compare with https://github.…
tlaurion Apr 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 70 additions & 41 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ commands:
jobs:
prep_env:
docker:
# Docker image: tlaurion/heads-dev-env:v0.2.7
- image: tlaurion/heads-dev-env@sha256:5f890f3d1b6b57f9e567191695df003a2ee880f084f5dfe7a5633e3e8f937479
# Docker image: tlaurion/heads-dev-env:v0.2.9
- image: tlaurion/heads-dev-env@sha256:96f8f91c6464305c4a990d59f9ef93910c16c7fd0501a46b43b34a4600a368de
resource_class: large
working_directory: ~/heads
steps:
Expand Down Expand Up @@ -124,8 +124,8 @@ jobs:

build_and_persist:
docker:
# Docker image: tlaurion/heads-dev-env:v0.2.7
- image: tlaurion/heads-dev-env@sha256:5f890f3d1b6b57f9e567191695df003a2ee880f084f5dfe7a5633e3e8f937479
# Docker image: tlaurion/heads-dev-env:v0.2.9
- image: tlaurion/heads-dev-env@sha256:96f8f91c6464305c4a990d59f9ef93910c16c7fd0501a46b43b34a4600a368de
resource_class: large
working_directory: ~/heads
parameters:
Expand Down Expand Up @@ -153,8 +153,8 @@ jobs:

build:
docker:
# Docker image: tlaurion/heads-dev-env:v0.2.7
- image: tlaurion/heads-dev-env@sha256:5f890f3d1b6b57f9e567191695df003a2ee880f084f5dfe7a5633e3e8f937479
# Docker image: tlaurion/heads-dev-env:v0.2.9
- image: tlaurion/heads-dev-env@sha256:96f8f91c6464305c4a990d59f9ef93910c16c7fd0501a46b43b34a4600a368de
resource_class: large
working_directory: ~/heads
parameters:
Expand All @@ -175,8 +175,8 @@ jobs:

save_cache:
docker:
# Docker image: tlaurion/heads-dev-env:v0.2.7
- image: tlaurion/heads-dev-env@sha256:5f890f3d1b6b57f9e567191695df003a2ee880f084f5dfe7a5633e3e8f937479
# Docker image: tlaurion/heads-dev-env:v0.2.9
- image: tlaurion/heads-dev-env@sha256:96f8f91c6464305c4a990d59f9ef93910c16c7fd0501a46b43b34a4600a368de
resource_class: large
working_directory: ~/heads
steps:
Expand All @@ -196,13 +196,22 @@ jobs:
# CircleCI removed their wildcard support, so we have to list precise versions to cache in directory names
key: nix-docker-heads-coreboot-musl-cross-make-{{ checksum "./tmpDir/coreboot_musl-cross-make.sha256sums" }}{{ .Environment.CACHE_VERSION }}
paths:
# ppc64
- build/ppc64/coreboot-talos_2
- build/ppc64/musl-cross-make-fd6be58297ee21fcba89216ccd0d4aca1e3f1c5c
# x86
- build/x86/coreboot-4.11
- build/x86/coreboot-4.20.1
- build/x86/coreboot-4.22.01
- build/x86/coreboot-24.02.01
- build/x86/coreboot-25.09
- build/x86/coreboot-dasharo
# Dasharo forks (each builds its own toolchain from the Dasharo coreboot fork)
- build/x86/coreboot-dasharo_v56
- build/x86/coreboot-dasharo_nv4x
- build/x86/coreboot-dasharo_msi_z790
- build/x86/coreboot-dasharo_msi_z690
- build/x86/coreboot-purism
# musl-cross-make
- build/x86/musl-cross-make-fd6be58297ee21fcba89216ccd0d4aca1e3f1c5c
- crossgcc
- packages
Expand Down Expand Up @@ -239,34 +248,49 @@ workflows:
requires:
- prep_env

# Below, sequentially build one board for each coreboot version.
# The last board in the sequence is the dependency for the parallel boards built at the end, and also save_cache.
# Below, sequentially build one board for each coreboot version/toolchain.
# The first board of each toolchain version builds the crossgcc toolchain.
# Subsequent boards using the same toolchain depend on that first board.

# coreboot 24.02.01
# Toolchain: 24.02.01 (used by purism)
# coreboot purism: based on coreboot 24.02.01, reuse crossgcc from 24.02.01
- build_and_persist:
name: novacustom-nv4x_adl
target: novacustom-nv4x_adl
name: librem_14
target: librem_14
subcommand: ""
requires:
- x86-musl-cross-make

# coreboot purism: based on coreboot 24.02.01, reuse dasharo 24.02.01 crossgcc
# Dasharo forks - each builds its own crossgcc toolchain
# IMPORTANT: Dasharo boards CANNOT share toolchains with upstream coreboot releases
# because their custom FSP headers are incompatible with upstream FSP packages.
# See modules/coreboot for details.

# Dasharo v56 (V540TU/V560TU) - builds its own toolchain
- build_and_persist:
name: librem_14
target: librem_14
name: novacustom-v560tu
target: novacustom-v560tu
subcommand: ""
requires:
- novacustom-nv4x_adl
- x86-musl-cross-make

# t480 is based on 25.09 coreboot release, not sharing any buildstack from now, depend on muscl-cross cache
# Dasharo nv4x (NV4x ADL/NS50) - builds its own toolchain
- build_and_persist:
name: novacustom-nv4x_adl
target: novacustom-nv4x_adl
subcommand: ""
requires:
- x86-musl-cross-make

# Toolchain: 25.09 (used by t480)
- build_and_persist:
name: EOL_t480-hotp-maximized
target: EOL_t480-hotp-maximized
subcommand: ""
requires:
- x86-musl-cross-make

# coreboot talos_2
# coreboot talos_2 (ppc64)
- build_and_persist:
name: UNTESTED_talos-2
arch: ppc64
Expand All @@ -283,22 +307,20 @@ workflows:
requires:
- x86-musl-cross-make

# dasharo_msi
- build_and_persist:
name: UNTESTED_msi_z690a_ddr4
target: UNTESTED_msi_z690a_ddr4
subcommand: ""
requires:
- x86-musl-cross-make

# Cache one workspace per architecture
# Make sure workspace caches are chainloaded and the last in chain for an arch is saved
- save_cache:
requires:
- UNTESTED_talos-2
- EOL_t480-hotp-maximized

# Those onboarding new boards should add their entries below.
#======================================================================
# Parallel board builds - depend on toolchain providers above
#======================================================================

#----------------------------------------
# Toolchain 25.09 (t480 and variants)
#----------------------------------------
# coreboot 25.09 boards
- build:
name: EOL_x220-hotp-maximized
Expand Down Expand Up @@ -562,47 +584,54 @@ workflows:
requires:
- EOL_t480-hotp-maximized

# dasharo release, share 24.02.01 utils/crossgcc
#----------------------------------------
# Dasharo forks - each builds its own toolchain
#----------------------------------------
# Note: Dasharo boards cannot share toolchains with upstream coreboot releases
# because their custom FSP headers are incompatible with upstream FSP packages.

# dasharo_v56: V560TU builds its own toolchain, V540TU depends on it
- build:
name: UNTESTED_nitropad-ns50
target: UNTESTED_nitropad-ns50
name: novacustom-v540tu
target: novacustom-v540tu
subcommand: ""
requires:
- novacustom-nv4x_adl
- novacustom-v560tu

#NovaCustom v56 boards are based on coreboot 24.02.01 fork, so depend on nv4x_adl
# dasharo_nv4x: NV4x ADL builds its own toolchain
- build:
name: novacustom-v560tu
target: novacustom-v560tu
name: UNTESTED_nitropad-ns50
target: UNTESTED_nitropad-ns50
subcommand: ""
requires:
- novacustom-nv4x_adl

# dasharo_msi_z690: builds on nv4x toolchain (both based on same Dasharo fork)
- build:
name: novacustom-v540tu
target: novacustom-v540tu
name: UNTESTED_msi_z690a_ddr4
target: UNTESTED_msi_z690a_ddr4
subcommand: ""
requires:
- novacustom-nv4x_adl

# dasharo_msi
- build:
name: UNTESTED_msi_z690a_ddr5
target: UNTESTED_msi_z690a_ddr5
subcommand: ""
requires:
- UNTESTED_msi_z690a_ddr4

# dasharo_msi_z790: builds on nv4x toolchain (both based on same Dasharo fork)
- build:
name: UNTESTED_msi_z790p_ddr4
target: UNTESTED_msi_z790p_ddr4
subcommand: ""
requires:
- UNTESTED_msi_z690a_ddr4
- novacustom-nv4x_adl

- build:
name: msi_z790p_ddr5
target: msi_z790p_ddr5
subcommand: ""
requires:
- UNTESTED_msi_z690a_ddr4
- UNTESTED_msi_z790p_ddr4
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -492,6 +492,10 @@ define define_module =
git -C "$(build)/$($1_base_dir)" submodule sync && \
echo "INFO: Updating submodules (init and checkout)" && \
git -C "$(build)/$($1_base_dir)" submodule update --init --checkout && \
echo "INFO: Cleaning board-specific build directories to prevent stale artifacts" && \
rm -rf "$(build)/$(BOARD)" "$(build)/$($1_base_dir)/$(BOARD)" && \
echo "INFO: Recreating board directories" && \
mkdir -p "$(build)/$(BOARD)" "$(build)/$($1_base_dir)/$(BOARD)" && \
Comment on lines +495 to +498
Copy link

Copilot AI Jan 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Makefile now removes and recreates board directories every time submodules are updated. This aggressive cleaning approach could cause issues if other build artifacts or files exist in these directories that shouldn't be removed. The cleaning happens unconditionally even when it may not be necessary (e.g., when submodules haven't actually changed). Consider making this cleaning conditional or documenting why this aggressive approach is needed.

Copilot uses AI. Check for mistakes.
echo "INFO: Updating .canary file with new repo info" && \
echo -n '$($1_repo)|$($1_commit_hash)' > "$$@" ; \
fi
Expand Down
Loading