Build fails: board SoC not resolved (Kconfig.defconfig missing) — ZMK main / Zephyr HWMv2 #1

Closed
opened 2026-08-14 23:25:24 +02:00 by ma3s7r0 · 1 comment
Owner

Every board in the matrix fails at CMake configure, before any compilation:

Parsing /tmp/zmk-config/zmk/app/Kconfig
/tmp/zmk-config/zephyr/scripts/kconfig/kconfig.py: Kconfig.zephyr:29:
  '/tmp/tmp.XXXX/Kconfig/soc/Kconfig.defconfig' not found
  (in 'source "$(KCONFIG_BINARY_DIR)/soc/Kconfig.defconfig"')
CMake Error at /tmp/zmk-config/zephyr/cmake/modules/kconfig.cmake:396 (message):
  command failed with return code: 1
-- Configuring incomplete, errors occurred!
FATAL ERROR: command exited with status 1: cmake ... -DBOARD=eyelash_sofle_left
  -DZMK_CONFIG=/tmp/zmk-config/config -DSHIELD=nice_view
  -DZMK_EXTRA_MODULES=/workspace/ma3s7r0/zmk-sofle ...

Affects all three matrix entries:

  • nice_view - eyelash_sofle_left
  • settings_reset - eyelash_sofle_left
  • nice_view_custom - eyelash_sofle_right

Cause

Zephyr generates soc/Kconfig.defconfig in the Kconfig binary dir from the SoC of the selected
board. It is missing, so the SoC for eyelash_sofle_* never resolved — the board definition in this
repo is not being understood by the Zephyr version current ZMK pulls in.

config/west.yml tracks upstream unpinned:

- name: zmk
  remote: zmkfirmware
  revision: main

so ZMK's Zephyr 4.1 upgrade and its hardware model v2
board requirements landed here automatically. zephyr/module.yml declares only

build:
  settings:
     board_root: .

which is the older board-module shape. This matches the failure starting ~2026-06-10 with no change
on our side. (mario-peripheral-animation is also on revision: main and has the same exposure.)

Options

  1. Pin ZMK — set revision: to a release tag predating the Zephyr 4.1 move. Fastest way back to
    working firmware, and what upstream recommends: see
    pinning your ZMK version. ZMK's own
    build-user-config.yml has a dedicated step that prints this advice when a build from main
    fails.
  2. Migrate the board definition to hardware model v2 — the durable fix, keeps us on main.
    Needs board.yml with the SoC declared, and the Kconfig.<board> / *_defconfig layout HWMv2
    expects, instead of the HWMv1 files under boards/.

Suggest 1 now, 2 when there's time.

Not the cause

Unrelated to the Forgejo migration (ma3s7r0/nix-config#78) — this failed the same way on GitHub
Actions since 2026-06-10. CI on git.cl12.de now runs correctly: the job is scheduled on the errata
runner, the zmkfirmware/zmk-build-arm:stable toolchain container starts, west init/update
succeed, and the build reaches CMake configure. The dtc duplicate unit-address warnings in the log
are pre-existing noise from Nordic's SoC dtsi, not related.

Every board in the matrix fails at CMake configure, before any compilation: ``` Parsing /tmp/zmk-config/zmk/app/Kconfig /tmp/zmk-config/zephyr/scripts/kconfig/kconfig.py: Kconfig.zephyr:29: '/tmp/tmp.XXXX/Kconfig/soc/Kconfig.defconfig' not found (in 'source "$(KCONFIG_BINARY_DIR)/soc/Kconfig.defconfig"') CMake Error at /tmp/zmk-config/zephyr/cmake/modules/kconfig.cmake:396 (message): command failed with return code: 1 -- Configuring incomplete, errors occurred! FATAL ERROR: command exited with status 1: cmake ... -DBOARD=eyelash_sofle_left -DZMK_CONFIG=/tmp/zmk-config/config -DSHIELD=nice_view -DZMK_EXTRA_MODULES=/workspace/ma3s7r0/zmk-sofle ... ``` Affects all three matrix entries: - `nice_view - eyelash_sofle_left` - `settings_reset - eyelash_sofle_left` - `nice_view_custom - eyelash_sofle_right` ## Cause Zephyr generates `soc/Kconfig.defconfig` in the Kconfig binary dir from the SoC of the selected board. It is missing, so the SoC for `eyelash_sofle_*` never resolved — the board definition in this repo is not being understood by the Zephyr version current ZMK pulls in. `config/west.yml` tracks upstream unpinned: ```yaml - name: zmk remote: zmkfirmware revision: main ``` so ZMK's [Zephyr 4.1 upgrade](https://zmk.dev/blog/2025/12/09/zephyr-4-1) and its hardware model v2 board requirements landed here automatically. `zephyr/module.yml` declares only ```yaml build: settings: board_root: . ``` which is the older board-module shape. This matches the failure starting ~2026-06-10 with no change on our side. (`mario-peripheral-animation` is also on `revision: main` and has the same exposure.) ## Options 1. **Pin ZMK** — set `revision:` to a release tag predating the Zephyr 4.1 move. Fastest way back to working firmware, and what upstream recommends: see [pinning your ZMK version](https://zmk.dev/blog/2025/06/20/pinned-zmk). ZMK's own `build-user-config.yml` has a dedicated step that prints this advice when a build from `main` fails. 2. **Migrate the board definition to hardware model v2** — the durable fix, keeps us on `main`. Needs `board.yml` with the SoC declared, and the `Kconfig.<board>` / `*_defconfig` layout HWMv2 expects, instead of the HWMv1 files under `boards/`. Suggest 1 now, 2 when there's time. ## Not the cause Unrelated to the Forgejo migration (ma3s7r0/nix-config#78) — this failed the same way on GitHub Actions since 2026-06-10. CI on git.cl12.de now runs correctly: the job is scheduled on the errata runner, the `zmkfirmware/zmk-build-arm:stable` toolchain container starts, `west init`/`update` succeed, and the build reaches CMake configure. The `dtc` duplicate unit-address warnings in the log are pre-existing noise from Nordic's SoC dtsi, not related.
ma3s7r0 referenced this issue from a commit 2026-08-15 00:23:55 +02:00
Author
Owner

Fixed by pinning zmk to v0.3.0 in config/west.yml — the last release before the Zephyr 4.1 /
hardware-model-v2 change that this repo's boards/arm/ layout predates.

The workflow had to be pinned to the same tag: main's version runs a compat check built on
west boards --format "{qualifiers}", a HWMv2 concept absent from v0.3.0's Zephyr, which failed
with KeyError: 'qualifiers' after the firmware had already built.

Builds are green and publish a downloadable firmware artifact (1,504,256 bytes):

148992  settings_reset-eyelash_sofle_left-zmk.uf2
587264  nice_view_custom-eyelash_sofle_right-zmk.uf2
768000  eyelash_sofle_studio_left.uf2

The HWMv2 board migration is deliberately not done — upstream a741725193/zmk-sofle hasn't
migrated either; it pins cormoran/zmk at v0.3-branch+dya and has restructured eyelash_sofle
into a shield on nice_nano_v2. Migrating our own board definitions now would mean maintaining a
definition neither upstream nor ZMK has settled on. Worth revisiting when upstream picks a direction.

Fixed by pinning zmk to `v0.3.0` in `config/west.yml` — the last release before the Zephyr 4.1 / hardware-model-v2 change that this repo's `boards/arm/` layout predates. The workflow had to be pinned to the same tag: main's version runs a compat check built on `west boards --format "{qualifiers}"`, a HWMv2 concept absent from v0.3.0's Zephyr, which failed with `KeyError: 'qualifiers'` *after* the firmware had already built. Builds are green and publish a downloadable `firmware` artifact (1,504,256 bytes): ``` 148992 settings_reset-eyelash_sofle_left-zmk.uf2 587264 nice_view_custom-eyelash_sofle_right-zmk.uf2 768000 eyelash_sofle_studio_left.uf2 ``` The HWMv2 board migration is deliberately **not** done — upstream `a741725193/zmk-sofle` hasn't migrated either; it pins `cormoran/zmk` at `v0.3-branch+dya` and has restructured `eyelash_sofle` into a shield on `nice_nano_v2`. Migrating our own board definitions now would mean maintaining a definition neither upstream nor ZMK has settled on. Worth revisiting when upstream picks a direction.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
ma3s7r0/zmk-sofle#1
No description provided.