Skip to content

ci, docs: build and smoke-test the 16 openipc-novatek SoCs - #100

Merged
dimerr merged 3 commits into
openipcfrom
ci/novatek-more-socs
Nov 4, 2026
Merged

dimerr merged 3 commits into
openipcfrom
ci/novatek-more-socs

Conversation

@dimerr

@dimerr dimerr commented Nov 4, 2026

Copy link
Copy Markdown
Collaborator

CI and docs for the 16 SoCs in #99.

  • Build: build-novatek.yml builds all 16 targets. Each leg has its own image name and size limit, and the AArch64 NVR targets (NT98332, NT98633) get gcc-aarch64-linux-gnu.
  • Smoke test: a qemu job builds qemu-system-arm and qemu-system-aarch64 from OpenIPC/qemu-hisilicon master, and 16 smoke legs boot each image twice.
  • NVR test images: the NVR images need a stand-in loader and BL31 to run in QEMU. Those test images are uploaded as qemu-image-<soc>, so they never reach a release.
  • Docs: the README SoC table and CLAUDE.md are updated.

Draft until both of these are merged:

  1. novatek: NT98633 (NA51090) NVR with live view, NT9852x, NT9832x and NT9856x additions qemu-bench#222: the smoke jobs need its Novatek machines on master.
  2. novatek: 14 more SoCs (NT9852x, NT98532/533, NT9832x, NT98332/633) and the loader's MMU hand-off #99: this workflow builds the targets that PR adds.

build-novatek.yml for the SoCs openipc-novatek gains: NT98560/561
(NA51089), NT98520/522/523/525 (NA51055), NT98528/529 (NA51084), and
the NVRs NT98332 (NA51103) and NT98633 (NA51090).

- build: every SoC, gcc-aarch64-linux-gnu for the NVRs, and each leg's
  partition-fit check against its own slot (the cameras' 256 KiB boot
  partition, the NVRs' U-Boot slot: 128 KiB of NOR, 896 KiB of NAND).
  The NVRs' emulator image (u-boot-<soc>-qemu.bin, a boot area for the
  stand-in loader) is uploaded as qemu-image-<soc>, which the release
  and publish jobs' u-boot-* pattern does not take.
- qemu: qemu-system-aarch64 too, cloned from OpenIPC/qemu-hisilicon.
- qemu_smoke: per leg the machine (the NT98520 and NT98522 on the
  NT98525's and NT98523's), the binary, the image, the flash size and
  extra arguments (-smp 2 / -smp 4 on the NVRs).

The new machines are in OpenIPC/qemu-bench#222: until it is on
master, the new legs' smoke tests cannot pass.

README: the Novatek table and notes; CLAUDE.md: the workflow section.
@dimerr
dimerr marked this pull request as ready for review November 4, 2026 04:50
@qodo-free-for-open-source-projects

Copy link
Copy Markdown

PR Summary by Qodo

Build and smoke-test 16 Novatek SoCs

⚙️ Configuration changes 🧪 Tests 📝 Documentation 🕐 40+ Minutes

Grey Divider

AI Description

• Build all 16 Novatek targets and check each released image against its boot slot.
• Boot every target twice in QEMU, keeping NVR emulator images out of releases.
• Document supported hardware, image layouts, toolchains, and upstream QEMU requirements.
Diagram

graph TD
  B["Build matrix"] --> F["Slot fit"] --> A[("Release images")] --> S["Two-boot smoke"] --> P["Release and publish"]
  F --> E[("NVR emulator images")] --> S
  Q["QEMU binaries"] --> S
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Generate both matrices from one target manifest
  • ➕ Reduces the risk of build and smoke target lists drifting apart.
  • ➖ Adds generation and validation machinery to an otherwise explicit GitHub Actions workflow.

Recommendation: Keep the explicit matrices for now: per-target image, machine, and flash differences remain reviewable in one workflow. If target coverage grows further, a validated shared manifest would address duplication.

Files changed (3) +149 / -71

Documentation (2) +59 / -17
CLAUDE.mdDocument expanded Novatek workflow +27/-11

Document expanded Novatek workflow

• Explains camera and NVR image layouts, toolchain requirements, per-target size checks, and emulator-only artifacts. Records the QEMU machine dependency and two-boot smoke-test behavior.

CLAUDE.md

README.mdDocument the 16 supported Novatek SoCs +32/-6

Document the 16 supported Novatek SoCs

• Expands the hardware table with CPU, memory, flash, and die-family details. Clarifies external-DDR loader assumptions, NVR slot-only images, and build and recovery requirements.

README.md

Other (1) +90 / -54
build-novatek.ymlBuild and QEMU-test all 16 Novatek targets +90/-54

Build and QEMU-test all 16 Novatek targets

• Expands both matrices to 16 targets, adds AArch64 tooling and QEMU, and checks each release image against its own boot slot. NVR stand-in images use separate artifacts excluded from release and publication; each smoke leg selects its machine, flash size, and emulator before checking two boots.

.github/workflows/build-novatek.yml

@qodo-free-for-open-source-projects

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider

Great, no issues found!

Qodo reviewed your code and found no material issues that require review

Grey Divider

Tip of the day
💡 Did you know, you can commit Qodo's fix in one click with committable suggestions (GitHub & GitLab)

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

@dimerr
dimerr merged commit 81c599c into openipc Nov 4, 2026
81 of 95 checks passed
@dimerr
dimerr deleted the ci/novatek-more-socs branch November 4, 2026 05:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant