Commit Graph
112 Commits
Author SHA1 Message Date
da13271f94 ci: mirror firmware's size-report sidecar (OpenIPC/firmware#2166) (#102)
Firmware PR #2166 added a `size-report` Makefile target + the
`general/scripts/size_report.py` analyser that emits a per-package /
per-kernel-module `sizes.<soc>-<variant>.json` next to the .tgz. Builder
clones firmware fresh on every run and shells to `make BOARD=...`, so the
script + target are already available downstream — this PR adds the CI wiring
and manifest extension so the JSON ships as a release asset and surfaces
through https://openipc.github.io/builder/manifest.json.

Three changes:

* `builder.sh`: best-effort `make size-report` after the main build, and
  copy `sizes.*.json` into the timestamped archive next to `.tgz` /
  `rootfs.squashfs.*`. Failure is swallowed so a legacy `OPENIPC_FW_REV` pin
  to a pre-#2166 firmware ref can't sink the build.

* `.github/workflows/master.yml`: new `Build size report` step after the
  existing `Build firmware`. Mirrors the bimodal rename trick the .tgz path
  already does — compound matrix entries (`<soc>_<variant>_<vendor>-<model>`)
  share `<soc>_<variant>` and would otherwise collide on the firmware-side
  `sizes.<soc>-<variant>.json` filename when uploaded to the same release
  tag. Compound entries get the JSON renamed to `sizes.<NAME>.json`; simple
  entries keep `sizes.<soc>-<variant>.json`. `${{env.SIZES}}` is added to
  all three upload `files:` blocks (dated / nightly / latest).

* `.github/scripts/enrich_manifest.py`: `SIZES_COMPOUND_RE` +
  `SIZES_SIMPLE_RE`, a `parse_sizes()` helper that tries compound first
  (because `[^._-]+` in the simple soc class would otherwise accept the
  compound form too), the sidecar is recorded at the platform level under
  a `"sizes"` key in `manifest.json`, and a new `@sizes <build_id>
  <platform> <size> <url>` line type is emitted in `manifest.flat`
  alongside the existing `@channel` directive.

Schema is unchanged for existing consumers — on-device sysupgrade reads
positional 4-column `manifest.flat` lines and stays inert on unknown
`@`-prefixed directives.

Co-authored-by: John <zekccsripfwrocp-15689@yn.furvionx.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-03 15:05:05 +03: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
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
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 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 PellegrinoandGitHub 2ba771ada7 Add new APFPV configurations to master.yml 2026-04-06 00:14:44 +03:00
Signor PellegrinoandGitHub 01590e34ca Add ssc377qe_fpv_generic to workflow 2026-04-05 00:57:21 +03:00
cronyx fd2666c7c9 correct locations, autobuild, readme 2026-02-14 19:20:49 +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) 8d4c399de7 Add gk7205v300_lite_vixand-ivg-g6s 2025-10-31 19:40:32 +03:00
Signor Pellegrino (from Citadel PC) d77caf21c7 Update files for t40_lite_movols-mo-805p 2025-09-10 19:27:12 +03:00
cronyx 9060f0a967 update workflow 2025-08-29 11:18:14 +03:00
Signor Pellegrino (from Citadel PC) e494573166 Update cmcc-ds-ytj5301 profile 2025-08-28 16:05:14 +03:00
Ystinia Zalatova (from Futurae PC) d508523872 Adding integration of three new devices on the T31N processor 2025-08-24 21:26:08 +01:00
cronyx d7d26507d7 base profile for aceline aip-o4 2025-08-07 20:48:39 +03:00
viktorxda e05c0261be Add ssc378qe_apfpv_defconfig 2025-08-05 00:42:25 +02:00
cronyx d6a1285f46 update workflow 2025-08-02 14:50:02 +03:00
viktorxda 9168fc2e93 Add ssc338q_apfpv_defconfig 2025-05-29 20:08:07 +02:00
Signor Pellegrino (from Citadel PC) 5dfa02a499 Add ssc337_lite_tiandy-tc-c321n-v2 profile 2025-03-03 09:49:08 +03:00
cronyx e43425ac0b fix name format 2025-02-16 21:08:07 +03:00
cronyx 011f954925 update workflow 2025-02-16 20:44:34 +03:00
Petru SoroagaandGitHub 9fbdc407f1 Updated RubyFPV firmware names (#46) 2025-02-14 11:05:42 +03:00
Petru SoroagaandGitHub 3107679295 Updated RubyFPV target images (#44)
Rationale:
End users might not know exactly what hardware they have, they just want to find RubyFPV firmware options, so in the release page, in the list of released firmware packages, it makes sense to have all RubyFPV related configs in a single place in the list (so all start with the same RubyFPV prefix).
2025-02-13 16:34:50 +03:00
Petru SoroagaandGitHub ca332c8aff Updated builder steps and configs for RubyFPV (#42) 2025-02-11 22:18:48 +03:00
cronyx 9fa7fe8d1a update workflow 2025-02-10 00:07:27 +03:00
Signor Pellegrino (from Citadel PC) d326af45d0 Initial t31_lite_cmcc-hdc-51-a6-v10 device 2025-02-08 00:23:36 +03:00
viktorxda c9c477f4ea Update master.yml 2025-01-28 11:38:31 +01:00
viktorxda 7f40eaf57b Add hisilicon-mini configurations 2025-01-27 10:41:40 +01:00
viktorxdaandGitHub 3e69df0d30 Add firmware fpv configurations (#40) 2025-01-27 09:21:28 +01:00
Signor Pellegrino (from Citadel PC) a3f1ab94f4 Add profile for XM G4H 2025-01-26 00:05:57 +03:00
Signor Pellegrino (from Citadel PC) ab363606db Add gk7205v200_lite_tiandy-tc-c321n profile 2025-01-18 23:17:08 +03:00
Signor Pellegrino (from Citadel PC) 324d5dc8a7 Add tiandy-tc-c32qn profile 2025-01-18 00:58:32 +03:00
Signor Pellegrino (from Citadel PC) e128c1b695 Add openipc-thinker-aio profile 2024-12-03 00:19:30 +03:00
Signor Pellegrino (from Citadel PC) 48038d9815 Uptate ssc333_lite_tp-link-tapo-c110-v26 2024-11-25 23:08:52 +03:00
Signor Pellegrino (from Citadel PC) ddd0a42c66 Add ssc338q_fpv_caddx-fly profile 2024-11-14 11:48:01 +03:00
viktorxdaandGitHub 5fcb9a01a1 Sync firmware changes (#32) 2024-10-26 00:36:47 +03:00
Signor Pellegrino (from Citadel PC) 0272c964b4 Add MSPOSD package to all SSC338Q profiles 2024-10-07 20:45:50 +03:00
viktorxda 3ecd6de6b5 Add ssc338q_fpv_openipc-mario-aio 2024-09-07 22:02:34 +02:00
cronyx 9f135d81a1 add imou-c22e-s2-v2 to autobuild 2024-08-05 13:29:26 +03:00
cronyx 3cfdd40b9d Vixand IVG-G6S-W 2024-08-03 15:31:12 +03:00
Signor Pellegrino 11069f811c Add hi3518ev300_lite_bathhouse profile 2024-06-13 23:49:07 +03:00
cronyx 3eff3eb8fc update workflow 2024-05-03 15:36:31 +03:00
Signor Pellegrino (from Citadel PC) 0c00262143 Remove unused profile gk7205v300_lite_elsar-v1 2024-04-29 21:35:57 +03:00
cronyx 9226123806 add Trassir TR-W2C1 v1 2024-04-29 12:26:42 +03:00
Viktor 918e6be82f Update Update ssc338q_fpv_openipc 2024-04-14 00:35:41 +02:00
Viktor d8138a185a Update github workflow 2024-04-09 16:28:06 +02:00
Viktor d40aafdb00 Add t31_lite_wyze-v3b 2024-04-08 23:38:42 +02:00
Signor Pellegrino (from Citadel PC) 2f2dbbc7e9 Add gk7205v300_lite_elsar-v1 profile 2024-04-06 17:19:23 +03:00
cronyx 48f8cea2fa fix model name 2024-04-05 12:47:14 +03:00