Commit Graph
532 Commits
Author SHA1 Message Date
Ystinia 9d8d5a323c Update gk7205v210_lite_vixand-ivg-g4h profile 2026-05-27 16:45:21 +02:00
a36a2d50aa ci: always rebuild on schedule (drop builder-HEAD-only dedupe) (#98)
The preflight gate skipped scheduled runs whenever this repo's HEAD
matched the SHA recorded in the previous nightly release body. That key
ignores every upstream input the build actually depends on:
OpenIPC/firmware HEAD, the toolchain release, the kernel tarball, the
vendor osdrv packages, and individual buildroot package upstreams.
builder.sh re-clones OpenIPC/firmware fresh on every run, so those
inputs do move between nightlies even when this repo is quiet.

The concrete failure mode this caused: on 2026-05-26 OpenIPC/firmware
bumped its hisilicon-opensdk pin to b958db4, which contains the V4
mipi_rx vsync IRQ fix (openhisilicon PR #195, closes #194 — torn
frames / 'Timeout from venc channel 0' on hi3516ev200, gk7205v200,
gk7205v210, gk7205v300, hi3516ev300 hardware). The next builder
nightly (2026-05-27 07:00 UTC) ran with this repo unchanged since
2026-05-25, so preflight skipped the entire Firmware matrix. Field
cameras (verified: gk7205v210_lite_vixand-ivg-g4h at IP redacted,
running BUILD_ID nightly-20260526-ee40da8, srcversion
8EF923DF907C1F7F3C6898E — the pre-fix open_mipi_rx fingerprint from
PR #195's verification table) kept pulling the stale 'latest' release
asset and kept showing the regression after sysupgrade.

A cross-input dedupe key would be possible (firmware HEAD + toolchain
URL hash + ...) but enumerates every upstream this build pulls. Simpler
and correct: scheduled nightlies always build. workflow_dispatch is
unaffected — that path was already unconditional.

Co-authored-by: Dmitry Ilyin <zekccsripfwrocp-15689@yn.furvionx.com>
2026-05-27 16:56:02 +03:00
Ystinia ee40da8007 Update gk7205v300_lite_vixand-ivg-g6s-w excludes 2026-05-25 14:44:33 +02:00
910c6326a3 ci: cache Buildroot dl/ at /tmp/builder-dl (mirrors firmware's dl cache) (#96)
OpenIPC/firmware/.github/workflows/build.yml has a `output/dl` cache
step that mirrors the Buildroot download directory across runs. This
saves both runner-minutes and — importantly — masks transient upstream
mirror failures: once any cron has cached the canonical tarball for a
package, every subsequent run reuses it regardless of whether the
primary URL is healthy that day.

builder's master.yml + build-one.yml had no equivalent. Each cron run
fully re-downloads the entire dl/ tree, so every package's upstream
must be healthy in every run. Hit hard 2026-05-24 by
wireguard-tools-1.0.20210914.tar.xz: it's served from a cgit
`snapshot/` URL on git.zx2c4.com which regenerates the tarball
per-request with shifting sha256, and `sources.buildroot.net` also
served drifted bytes — see kaeru
'wireguard-zx2c4-tarball-regeneration-hash-drift'. Result: random
matrix entries fail with hash mismatches each cron, with selection
roulette-style (93 boards enable wireguard; on any given run a few
roll snake-eyes on the download).

Mirror firmware's pattern with one wrinkle: builder.sh does
`rm -rf openipc` at the top of every run to force a clean re-clone of
firmware, which would obliterate `openipc/output/dl/` if we cached the
default path. Cache `/tmp/builder-dl` instead (outside the openipc
tree) and point Buildroot at it via BR2_DL_DIR env var, honored per
Buildroot manual section "Location of source tarballs". Same restore +
save lifecycle as firmware's, same monthly key shape.

Effect:
  - First cron after merge: full download as usual; warms /tmp/builder-dl.
  - Subsequent crons: instant cache hit for unchanged packages; only
    re-download for version bumps. Removes the wireguard-roulette class
    of failure entirely once cache is populated.

build-one.yml gets the same treatment so single-board dispatches share
the cache pool.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 21:42:11 +03:00
7b0757eb0e xg521: update device override for 60fps→high-fps rename in firmware (#95)
OpenIPC/firmware PR #2090 (2026-05-13, "IMX335 companion to
openhisilicon #99") renamed `general/package/goke-osdrv-gk7205v200/
files/sensor/config/60fps/` to `high-fps/`. The xg521 device-specific
goke-osdrv-gk7205v200.mk override here still references the old path,
causing every cron build of gk7202v300_lite_xg521 to fail:

  /usr/bin/install: cannot stat 'general/package/goke-osdrv-gk7205v200//
  files/sensor/config/60fps/*.ini': No such file or directory

Update the two install lines to use `high-fps` matching the renamed
upstream directory. Target install path also moves from
/etc/sensors/60fps → /etc/sensors/high-fps for consistency with what
the rest of the V4 sensor presets use.

The matching exclude-list entry in
  devices/gk7202v300_lite_xg521/general/scripts/excludes/gk7202v300_lite.list
references /etc/sensors/60fps/... and is now stale; left as-is since
`rm -f` on a non-existent path is a no-op (rootfs_script.sh:
xargs -I % rm -f ${TARGET_DIR}%). Can be cleaned in a follow-up.

Other Goke device overlays (gk7205v200_lite_*, gk7205v210_lite_*,
gk7205v300_lite_*) only have the same exclude-list staleness and no
broken install rule, so they aren't affected by this bug.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 19:18:09 +03:00
25ed956610 build-one: add firmware_ref input for cross-repo bisect (#94)
When investigating a regression that lives in OpenIPC/firmware (or its
referenced packages like hisilicon-opensdk) but only manifests in a
builder build, you previously had to either roll firmware master back
or fork builder.sh manually. Adds a clean way:

  gh workflow run build-one.yml -f platform=hi3516ev200_fpv \
                                -f firmware_ref=<sha-or-tag-or-branch>

The workflow exports OPENIPC_FW_REV as env, which builder.sh now
honours: when set, it does a full clone (not --depth=1) and checks
out the requested ref before invoking the firmware build. When unset,
behaviour is unchanged (shallow clone of master HEAD).

Immediate motivation: bisect the +180 KB rootfs growth in
hi3516ev200_fpv between 2026-05-08 (5016 KB) and 2026-05-24 (5196 KB,
76 KB over partition limit). Per kaeru
'hi3516ev200-ev300-fpv-rootfs-size-overflow-2026-05-24'. Suspect is
recent hisilicon-opensdk bumps that brought in source-built sensor
drivers for ev200; bisect across firmware commits varying
HISILICON_OPENSDK_VERSION will pinpoint which bump pushed us past
the 5120 KB limit.

Generally useful long after this specific incident:
- Reproducing user-reported regressions at a specific firmware tag.
- Locking builds to a known-good firmware revision when builder is
  ahead of firmware.
- Future cross-repo bisects of any kind.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 09:31:21 +03:00
c427c735b5 ci/build-one: accept arbitrary commit input; publish to nightly-bisect-* tag (#93)
PR-Bld-C in the mirror of OpenIPC/firmware's nightly redesign.
Mirrors OpenIPC/firmware#2116. Adds an optional `commit` workflow_-
dispatch input to `build-one.yml` so:

  - `gh workflow run build-one.yml -f platform=X -f commit=<sha>`
    builds the given SHA from `git bisect run`.
  - Output goes to `nightly-bisect-<short>` (prerelease) tag, distinct
    from the dated `nightly-YYYYMMDD-<short>` namespace produced by
    PR-Bld-A's master.yml. The manifest aggregator's regex only
    indexes `^nightly-[0-9]{8}-[0-9a-f]{7}$`, so one-off bisect
    rebuilds never enter manifest.{json,flat}.
  - Without `commit`, falls back to building HEAD and tags as
    `nightly-bisect-<short>-<UTC ts>` so repeated dispatches of the
    same HEAD don't collide.

Also:
  - Retry budget around `bash builder.sh` matching master.yml +
    OpenIPC/firmware#2129's hardening.
  - BUILD_ID / BUILD_SHA / BUILD_PLATFORM env at the Build firmware
    step level (forward-compat with Phase 3 of the mirror plan).
  - Drops dead `env: TAG_NAME: latest` at workflow level.
  - Release body carries sha/short/platform/one_off=true for the
    aggregator's downstream consumers to easily distinguish bisect
    builds from dated nightlies.

See ~/.claude/plans/mirror-nightly-redesign-to-builder.md.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 23:05:39 +03:00
63994266e2 ci/nightly: manifest aggregator + 90-build retention sweep (#92)
PR-Bld-B in the mirror of OpenIPC/firmware's nightly redesign. Adds
the two workflows that turn dated nightly-* releases (from PR-Bld-A)
into a queryable index served via GitHub Pages.

`manifest.yml` — triggers on successful `Build` workflow_run completion
(or manual dispatch). Runs `.github/scripts/enrich_manifest.py` to
enumerate dated releases, keep the 90 newest, parse the body
(sha/short/built_at from PR-Bld-A) and asset list, then emit:
  - `manifest.json` — rich JSON for hosts/agents/CI.
  - `manifest.flat` — whitespace-delimited columns
    `build_id platform flash size url` plus `@channel` records,
    parseable by pure busybox `awk` (no jq, no jsonfilter) for
    on-device sysupgrade in Phase 2.
Both committed to the `gh-pages` branch (already bootstrapped).

`cleanup.yml` — Mondays 06:00 UTC (offset by +1h from firmware's
05:00 UTC cleanup). Deletes dated nightly releases beyond the 90
newest via `gh release delete --cleanup-tag`, then re-triggers
manifest.yml.

`enrich_manifest.py` differs from firmware's only in the asset parser:
builder produces TWO filename forms (per `master.yml`'s COMMON awk
trick that counts underscores in the matrix entry name):
  - **Compound** `<soc>_<variant>_<vendor>-<model>-nor.tgz` →
    platform key = the full string. This is the common case
    (per-device builds).
  - **Simple** `openipc.<soc>-<flash>-<variant>.tgz` (firmware-style,
    when matrix name has one underscore) → platform key =
    `<soc>_<variant>`.

The platform key gets carried into manifest.flat as a single column.
sysupgrade's existing `awk '$2==p'` lookup works unchanged; Phase 3
(model-aware BUILD_PLATFORM field in os-release) will let cameras
filter against the full per-model key.

URLs after merge:
  https://openipc.github.io/builder/manifest.json
  https://openipc.github.io/builder/manifest.flat

(`gh-pages` branch + Pages config already set up; mirrors firmware-
side setup.)

Concurrency-grouped `gh-pages-manifest` so manifest.yml and
cleanup.yml can't race the gh-pages push.

Includes the retry hardening from firmware OpenIPC/firmware#2129
(4-attempt backoff for transient GitHub API 401/5xx, fast-fail on
permanent 404).

First-run behaviour validated locally: empty index emits explicit
placeholder. Parser unit-tested across 7 synthetic filenames covering
compound, simple, and edge cases.

See ~/.claude/plans/mirror-nightly-redesign-to-builder.md.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 23:05:36 +03:00
6bf71492fd ci/nightly: SHA-gate cron, publish dated nightly-* releases, BUILD_ID env (#91)
Mirror the OpenIPC/firmware nightly redesign (PRs #2111-#2129) to
builder. This commit is PR-Bld-A: the build.yml-side changes only.
Subsequent PRs add the manifest aggregator + retention sweep
(PR-Bld-B) and the build-one.yml commit input (PR-Bld-C).

Changes:

1. **Preflight SHA gate**. New `preflight` job reads `sha=` from the
   rolling `nightly` release body. On schedule events it short-
   circuits the matrix when HEAD matches the previously-published
   SHA; PRs and workflow_dispatch always build. Mirrors firmware's
   #2111.

2. **Three release tags per build**:
   - `nightly-YYYYMMDD-<short>` (prerelease, content-addressable,
     the unit of history — 90-day retention via PR-Bld-B's
     cleanup.yml).
   - `nightly` (rolling channel pointer; body carries sha/short/
     built_at).
   - `latest` (legacy alias, kept one cycle so existing sysupgrade
     clients hitting the old hardcoded URL don't break).

3. **`BUILD_ID` / `BUILD_SHA` / `BUILD_PLATFORM` env** exported at
   the job level from preflight outputs. firmware's rootfs_script.sh
   (which builder.sh reuses via its clone of firmware) picks BUILD_ID
   + BUILD_SHA into /etc/os-release automatically. BUILD_PLATFORM is
   set to the matrix entry (e.g. `gk7205v200_fpv_caddx-fly`) and is
   forward-compatible with Phase 3 of the mirror plan (the firmware-
   side rootfs_script.sh update that emits BUILD_PLATFORM as an
   os-release field).

4. **Retry budget** around `bash builder.sh`. Matches firmware's
   `30 60 120 300 600 1200` ladder, covering toolchain/CDN flakes
   (#2115 + #2129 in firmware).

5. **Telegram caption** leads with `Build: <build_id>`; obsolete
   `Tag: ${TAG_NAME}` line gone; workflow-level `env: TAG_NAME=
   latest` removed.

No on-device firmware changes; builder cameras keep their existing
sysupgrade legacy URL until Phase 2 of the mirror (sysupgrade variant
routing) lands in OpenIPC/firmware.

See ~/.claude/plans/mirror-nightly-redesign-to-builder.md.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 23:05:33 +03:00
Signor Pellegrino (from Citadel PC) b69b9f1675 Binary drivers for OS02G10 sensors have been removed as everything is now built from source code. 2026-05-13 13:27:16 +03:00
49dc2fdb33 ci: add build-one workflow for single-platform test builds (#88)
The Build workflow's matrix-of-everything makes it slow and noisy to
test a single device profile. Mirrors the build-one workflow already
present in OpenIPC/firmware.

Takes a full platform name (e.g. hi3518ev200_lite_switcam-hs303-v2)
and runs only that build via builder.sh.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 12:12:13 +03:00
IgorandGitHub 0e934d77df Update README.md 2026-04-22 22:24:30 +01:00
IgorandGitHub abde559e3a Update README.md 2026-04-22 22:22:24 +01:00
92a237e82a enable opensdk for all CV200-family device profiles (#86)
Add BR2_PACKAGE_HISILICON_OPENSDK=y to 9 hi3516cv200-family profiles
that were missing it. These boards will now get open_ modules built
from openhisilicon source instead of vendor-only blobs from osdrv.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 07:50:48 +03:00
Signor PellegrinoandGitHub 5627956b6d Replace ssc377qe_fpv_generic with ssc377qe_fpv_ccdcam-im50q01-tipoman 2026-04-12 20:12:41 +03:00
Signor Pellegrino (from Citadel PC) 3536392828 Add ssc377qe_fpv_ccdcam-im50q01-tipoman profile 2026-04-11 18:54:23 +03:00
Signor Pellegrino (from Citadel PC) d7a782d137 Move ssc377qe_fpv_generic profile to real ssc377qe_fpv_ccdcam-im50q01-tipoman 2026-04-11 18:50:20 +03:00
Signor Pellegrino (from Citadel PC) 3fcb27018d The selector BR2_OPENIPC_SNS_MODEL=os02g10 is now working, and it is no longer necessary to forcibly delete unnecessary .ko and .bin sensor files. 2026-04-11 18:33:42 +03:00
Signor Pellegrino (from Citadel PC) e89f0205db Remove unused os02g10 profile 2026-04-11 18:27:53 +03:00
tipoman9andGitHub bfe88f02b4 Ssc377qe fpv added 90fps and 120fps modes for imx335 driver (#83)
* Add ssc377qe_fpv_generic device

* ssc377qe_fpv_generic added ath9k patched drivers

* Updated imx335 sensor driver added 90 and 120fps modes
2026-04-11 15:49:42 +03:00
Signor Pellegrino (from Citadel PC) d2c123a8d7 Remove unused binary hi3516ev200_isp 2026-04-11 15:43:58 +03:00
Petr BeklemishevandGitHub a91c246b30 Support transition from hi3516ev200_isp to open_isp in openipc/firmware#1979 (#84) 2026-04-11 15:35:25 +03:00
viktorxda a72e0ea177 Sync firmware changes 2026-04-08 18:04:31 +02:00
Signor Pellegrino (from Citadel PC) f22549ddec Remove MAVFWD from ssc338q_apfpv_greg-* profiles 2026-04-06 08:36:51 +03:00
Signor PellegrinoandGitHub 2ba771ada7 Add new APFPV configurations to master.yml 2026-04-06 00:14:44 +03:00
Signor Pellegrino (from Citadel PC) 600ca103da Add ssc338q_apfpv_greg-generic-cu-eu profile 2026-04-06 00:05:04 +03:00
Signor Pellegrino (from Citadel PC) ee2074fc14 Add ssc338q_apfpv_greg-generic-bu-eu profile 2026-04-06 00:04:55 +03:00
Signor Pellegrino (from Citadel PC) 4d6c54cab3 Add ssc30kq_apfpv_greg-generic-cu-eu profile 2026-04-06 00:04:02 +03:00
Signor Pellegrino (from Citadel PC) 48b5edabbe Add ssc30kq_apfpv_greg-generic-bu-eu profile 2026-04-06 00:03:43 +03:00
Signor Pellegrino (from Citadel PC) d62145bc62 Update config name 2026-04-05 01:03:43 +03:00
Signor Pellegrino (from Citadel PC) 655722f9ac Merge branch 'master' of github2:OpenIPC/builder 2026-04-05 01:01:32 +03:00
Signor PellegrinoandGitHub 01590e34ca Add ssc377qe_fpv_generic to workflow 2026-04-05 00:57:21 +03:00
tipoman9andGitHub 31a9645157 Ssc377qe fpv build (#75)
* Add ssc377qe_fpv_generic device

* ssc377qe_fpv_generic added ath9k patched drivers

* Add ssc377qe region library
2026-04-05 00:48:21 +03:00
Puzzak01andGitHub b9b94d4f61 change (#81)
* Create ssc335de_lite_dahua-hfw1230sp-v2_defconfig

* Create customizer.sh

* Create gpio.conf

* Update README.md

* Create ssc335de_lite.list

* Create ssc335de_lite.list

* Update README.md

* Update ssc335de_lite.list

* Update ssc335de_lite.list

* Update README.md

* add gpio for reset button

* add gpio for mmc

* Update ssc335de_lite_dahua-hfw1230sp-v2_defconfig

* Update gpio.conf

* Update ssc335de_lite_dahua-hfw1230sp-v2_defconfig
2026-03-22 15:12:17 +03:00
Signor Pellegrino (from Citadel PC) c3d597ee4d Merge branch 'master' of github2:OpenIPC/builder 2026-02-16 13:26:51 +03:00
cronyx fd2666c7c9 correct locations, autobuild, readme 2026-02-14 19:20:49 +03:00
piotr-goandGitHub cd099a8723 Add files via upload (#74) 2026-02-14 19:07:33 +03:00
Signor Pellegrino (from Citadel PC) 60fce4e3c5 Up hi3518ev200_lite_smartwares-cip-37210 2025-12-28 23:09:59 +03:00
elvoblinandGitHub 4c53cf516a Board ipg g3 wr (#72)
* add: ipg-g3-wr device

* update exclude lists

* wip: gk7202v300_lite_ipg-g3-wr

* update: README.md
2025-11-05 19:57:36 +03:00
elvoblinandGitHub 7703cd18eb Board ipg g3 wr (#71)
* add: ipg-g3-wr device

* update exclude lists

* wip: gk7202v300_lite_ipg-g3-wr
2025-11-05 19:14:38 +03:00
Signor Pellegrino (from Citadel PC) bbbb476c35 Update t31_lite_cmcc-hdc-51-a6-v10 link 2025-11-02 20:52:00 +03:00
Signor Pellegrino (from Citadel PC) 1a81ca78d9 Add Led crutch for cmc-hdc-51-a6-v11 2025-11-02 00:49:14 +03:00
Signor Pellegrino (from Citadel PC) 079cccb1ac Merge branch 'master' of github2:OpenIPC/builder 2025-11-01 17:05:33 +03:00
Signor Pellegrino (from Citadel PC) 652edce4a2 Update Vixand devices 2025-11-01 17:04:41 +03:00
Signor PellegrinoandGitHub cef8fd6d48 Rename gk7205v300_lite_vixand-ivg-g6s-w_defconfig to gk7205v300_lite_vixand-ivg-g6s_defconfig 2025-10-31 21:10:49 +03:00
Signor Pellegrino (from Citadel PC) 8d4c399de7 Add gk7205v300_lite_vixand-ivg-g6s 2025-10-31 19:40:32 +03:00
Signor Pellegrino (from Citadel PC) 83f1e088aa Merge branch 'master' of github2:OpenIPC/builder 2025-10-31 19:36:05 +03:00
viktorxda 42eea9633e temporarily exclude msposd from infinity6c 2025-10-31 00:35:39 +01:00
Signor Pellegrino (from Citadel PC) 7c87592428 Update Vixand configs 2025-09-25 20:42:50 +03:00
userandGitHub 434ecd893a backlight 14 to 16 and setenv soc (#67) 2025-09-25 20:27:12 +03:00