Skip to content

Commit 426750a

Browse files
authored
Merge pull request #2039 from tlaurion/pre_release_dasharo_101_rc3
REGRESSION TESTING for next Dasharo+Heads: v560tu/v540tu dasharo tag 1.0.1, have all Dasharo coreboot based boards use their own tags
2 parents a1bf81d + a2a027f commit 426750a

77 files changed

Lines changed: 2675 additions & 524 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.circleci/config.yml

Lines changed: 352 additions & 143 deletions
Large diffs are not rendered by default.

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,4 @@ crossgcc
2525
typescript*
2626
result
2727
.claude/
28+
tmpDir/

Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,10 @@ define define_module =
492492
git -C "$(build)/$($1_base_dir)" submodule sync && \
493493
echo "INFO: Updating submodules (init and checkout)" && \
494494
git -C "$(build)/$($1_base_dir)" submodule update --init --checkout && \
495+
echo "INFO: Cleaning board-specific build directories to prevent stale artifacts" && \
496+
rm -rf "$(build)/$(BOARD)" "$(build)/$($1_base_dir)/$(BOARD)" && \
497+
echo "INFO: Recreating board directories" && \
498+
mkdir -p "$(build)/$(BOARD)" "$(build)/$($1_base_dir)/$(BOARD)" && \
495499
echo "INFO: Updating .canary file with new repo info" && \
496500
echo -n '$($1_repo)|$($1_commit_hash)' > "$$@" ; \
497501
fi

README.md

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ Heads codebase. Start here:
3434
| [doc/ux-patterns.md](doc/ux-patterns.md) | GUI/UX conventions: whiptail wrappers, integrity report, error flows |
3535
| [doc/config.md](doc/config.md) | Board and user configuration system |
3636
| [doc/docker.md](doc/docker.md) | Reproducible build workflow using Docker |
37+
| [doc/circleci.md](doc/circleci.md) | CircleCI pipeline layout, workspace flow, and cache behavior |
3738
| [doc/qemu.md](doc/qemu.md) | QEMU board targets for development and testing |
3839
| [doc/wp-notes.md](doc/wp-notes.md) | Flash write-protection status per board |
3940
| [doc/BOARDS_AND_TESTERS.md](doc/BOARDS_AND_TESTERS.md) | Supported boards and their maintainers/testers |
@@ -65,9 +66,15 @@ provided Docker wrappers — no host-side QEMU or swtpm installation is needed.
6566
and QEMU runtime with software TPM (swtpm) and the bundled `canokey-qemu`
6667
virtual OpenPGP smartcard. Build and test entirely in software before flashing real hardware.
6768

69+
Build targets are the directory names under `boards/`. For the current set of
70+
tested and maintained targets, see [doc/BOARDS_AND_TESTERS.md](doc/BOARDS_AND_TESTERS.md).
71+
6872
For full details — wrapper scripts, Nix local dev, reproducibility verification, and
6973
maintainer workflow — see **[doc/docker.md](doc/docker.md)**.
7074

75+
For CI cache/workspace behavior and the CircleCI job graph, see
76+
**[doc/circleci.md](doc/circleci.md)**.
77+
7178
For QEMU board testing see **[doc/qemu.md](doc/qemu.md)**.
7279

7380
For troubleshooting build issues see **[doc/faq.md](doc/faq.md)** and
@@ -97,13 +104,11 @@ enabled by most board configs include:
97104

98105
* [musl-cross-make](https://github.com/richfelker/musl-cross-make) — cross-compiler toolchain
99106
* [coreboot](https://www.coreboot.org/) — minimal firmware replacing vendor BIOS/UEFI
100-
* [Linux](https://kernel.org) — minimal kernel payload (no built-in initramfs; boots with external initrd such as `initrd.cpio.xz`)
107+
* [Linux](https://kernel.org) — minimal kernel payload (no built-in initrd; boots with external initrd such as `initrd.cpio.xz`)
101108
* [busybox](https://busybox.net/) — core utilities
102-
* [kexec](https://wiki.archlinux.org/index.php/kexec) — boot OS from /boot
109+
* [kexec](https://wiki.archlinux.org/index.php/kexec) — Linux kernel executor (loads kernels from boot partition, USB, network)
110+
* [tpmtotp](https://github.com/osresearch/tpmtotp) — TPM-based TOTP/HOTP one-time password generator
103111
* [cryptsetup](https://gitlab.com/cryptsetup/cryptsetup) — LUKS disk encryption
104-
* [GPG](https://www.gnupg.org/) — /boot signature verification
105-
* [mbedtls](https://tls.mbed.org/) — cryptography for TPM operations
106-
* [tpmtotp](https://trmm.net/Tpmtotp) — TPM-based TOTP/HOTP attestation
107112

108113
The full build also includes: lvm2, tpm2-tools, flashrom/flashprog, dropbear (SSH),
109114
fbwhiptail (GUI), qrencode, and many others. See individual `modules/*` files and
@@ -118,12 +123,13 @@ kernel.
118123

119124
* Building coreboot's cross compilers can take a while. Luckily this is only done once.
120125
* Builds are finally reproducible! The [reproduciblebuilds tag](https://github.com/osresearch/heads/issues?q=is%3Aopen+is%3Aissue+milestone%3Areproduciblebuilds) tracks any regressions.
121-
* Currently only tested in QEMU, the Thinkpad x230, Librem series and the Chell Chromebook.
122-
** Xen does not work in QEMU. Signing, HOTP, and TOTP do work; see below.
123-
* Building for the Lenovo X220 requires binary blobs to be placed in the blobs/x220/ folder.
124-
See the readme.md file in that folder
125-
* Building for the Librem 13 v2/v3 or Librem 15 v3/v4 requires binary blobs to be placed in
126-
the blobs/librem_skl folder. See the readme.md file in that folder
126+
* Current tested and maintained boards are tracked in [doc/BOARDS_AND_TESTERS.md](doc/BOARDS_AND_TESTERS.md). Board targets themselves live under `boards/`.
127+
* Xen does not work in QEMU. Signing, HOTP, and TOTP do work; see below.
128+
* Blob requirements are board- or board-family-specific. Check the relevant documentation under `blobs/` for the target you are building.
129+
* Purism boards use Purism-managed coreboot blob paths from the Purism fork (for example `3rdparty/purism-blobs/...` via `CONFIG_IFD_BIN_PATH` and `CONFIG_ME_BIN_PATH` in `config/coreboot-librem_*.config`). Heads should not maintain those vendor blob payloads. Runtime firmware notes for Librem blob jail are in [blobs/librem_jail/README](blobs/librem_jail/README).
130+
* Lenovo xx20 boards such as X220 and X230 use the shared xx20 blob flow documented in [blobs/xx20/readme.md](blobs/xx20/readme.md). X220-specific notes are in [blobs/x220/readme.md](blobs/x220/readme.md).
131+
* Other boards can source blobs from board-family directories under `blobs/` (for example xx20/xx30/xx80, t420, t440p, w541) or from fork-specific paths configured in coreboot configs (for example Dasharo boards using `3rdparty/dasharo-blobs/...`). Vendor blob payloads remain maintained by their upstream vendors/forks.
132+
* T480 and T480s blob requirements are documented in [blobs/xx80/README.md](blobs/xx80/README.md). Other families have their own docs under `blobs/`, for example `t420/`, `t440p/`, and `w541/`.
127133

128134
### QEMU
129135

bin/fetch_source_archive.sh

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,11 @@ rm -f "$FILE" "$TMP_FILE"
7575
# Try the primary source
7676
download "$URL" && exit 0
7777

78+
# Log mirror fallback for developer awareness
79+
MIRROR_LOG="${MIRROR_LOG:-build/mirror_fallbacks.log}"
80+
mkdir -p "$(dirname "$MIRROR_LOG")"
81+
echo "$(date -Iseconds) MIRROR_FALLBACK primary=$URL" >>"$MIRROR_LOG"
82+
7883
# Shuffle the mirrors so we try each equally
7984
readarray -t BACKUP_MIRRORS < <(shuf -e "${BACKUP_MIRRORS[@]}")
8085

@@ -86,7 +91,10 @@ archive="$(basename "$FILE")"
8691
echo "Try mirrors for $archive" >&2
8792

8893
for mirror in "${BACKUP_MIRRORS[@]}"; do
89-
download "$mirror$archive" && exit 0
94+
if download "$mirror$archive"; then
95+
echo "$(date -Iseconds) MIRROR_USED mirror=$mirror$archive" >>"$MIRROR_LOG"
96+
exit 0
97+
fi
9098
done
9199

92100
# All mirrors failed

boards/UNTESTED_msi_z690a_ddr4/UNTESTED_msi_z690a_ddr4.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# MSI PRO Z690-A DDR4 board configuration
22

33
export CONFIG_COREBOOT=y
4-
export CONFIG_COREBOOT_VERSION=dasharo_msi
4+
export CONFIG_COREBOOT_VERSION=dasharo_msi_z690
55
export CONFIG_LINUX_VERSION=6.1.8
66

77
CONFIG_COREBOOT_CONFIG=config/coreboot-msi_z690a_ddr4.config

boards/UNTESTED_msi_z690a_ddr5/UNTESTED_msi_z690a_ddr5.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# MSI PRO Z690-A (DDR5) board configuration
22

33
export CONFIG_COREBOOT=y
4-
export CONFIG_COREBOOT_VERSION=dasharo_msi
4+
export CONFIG_COREBOOT_VERSION=dasharo_msi_z690
55
export CONFIG_LINUX_VERSION=6.1.8
66

77
CONFIG_COREBOOT_CONFIG=config/coreboot-msi_z690a_ddr5.config

boards/UNTESTED_msi_z790p_ddr4/UNTESTED_msi_z790p_ddr4.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# MSI PRO Z790-P DDR4 board configuration
22

33
export CONFIG_COREBOOT=y
4-
export CONFIG_COREBOOT_VERSION=dasharo_msi
4+
export CONFIG_COREBOOT_VERSION=dasharo_msi_z790
55
export CONFIG_LINUX_VERSION=6.1.8
66

77
CONFIG_COREBOOT_CONFIG=config/coreboot-msi_z790p_ddr4.config

boards/UNTESTED_nitropad-ns50/UNTESTED_nitropad-ns50.config

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
# Dissassembly and Recovery: https://docs.dasharo.com/unified/novacustom/recovery/#ns5x7x-12th-gen
66

77
export CONFIG_COREBOOT=y
8-
export CONFIG_COREBOOT_VERSION=dasharo
8+
export CONFIG_COREBOOT_VERSION=dasharo_nv4x
9+
CONFIG_DASHARO_EC=y
910
export CONFIG_LINUX_VERSION=6.1.8
1011

1112
CONFIG_COREBOOT_CONFIG=config/coreboot-nitropad-ns50.config

boards/msi_z790p_ddr5/msi_z790p_ddr5.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# MSI PRO Z790-P (DDR5) board configuration
22

33
export CONFIG_COREBOOT=y
4-
export CONFIG_COREBOOT_VERSION=dasharo_msi
4+
export CONFIG_COREBOOT_VERSION=dasharo_msi_z790
55
export CONFIG_LINUX_VERSION=6.1.8
66

77
CONFIG_COREBOOT_CONFIG=config/coreboot-msi_z790p_ddr5.config

0 commit comments

Comments
 (0)