From 7a9e11b7297af92e4b565d5651df1b141714ea6a Mon Sep 17 00:00:00 2001 From: Mike Solar Date: Thu, 24 Sep 2026 12:43:29 +0800 Subject: [PATCH] ci: fix the vcpkg ffmpeg manifest feature and pin vcpkg resolves the ffmpeg dependency before anything builds and rejects the manifest because the pinned 8.1.2#3 port has no `png` feature ("ffmpeg@8.1.2#3 does not have required feature png needed by oak"), so every desktop job died in "Install dependencies (vcpkg manifest)" and never reached the build or test steps. PNG decoding in FFmpeg needs zlib (png_decoder_deps=zlib); libpng is only the encoder backend and this port never enables it. Request `zlib` instead. Also point the stale comments/docs at the actual pin: the override is 8.1.2#3 (matching the ffmpeg-next 8.x binding after the 9.0.0 binding was found broken upstream), not 9.0.1#1. --- .github/workflows/ci.yml | 2 +- docs/build.md | 4 ++-- vcpkg.json | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9822ae8e1..e17ee0872 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -60,7 +60,7 @@ jobs: # vcpkg (manifest mode) + caches # ------------------------------------------------------------------ # The runner has no vcpkg preinstalled; bootstrap a fresh clone. - # The manifest at the repo root pins the dependency set (FFmpeg 9.0.1 + # The manifest at the repo root pins the dependency set (FFmpeg 8.1.2 # via `overrides`, everything else via `builtin-baseline`) and the # resolved tree lands in vcpkg_installed/. - name: Bootstrap vcpkg diff --git a/docs/build.md b/docs/build.md index 42eb1a56c..0903811d7 100644 --- a/docs/build.md +++ b/docs/build.md @@ -39,7 +39,7 @@ macOS, Linux, and Windows. For the Chinese version see - **CI/CD uses the vcpkg manifest instead of `build-ffmpeg.sh`.** Every desktop job runs `vcpkg install --triplet ` against the repo-root `vcpkg.json`, which - pins FFmpeg to **9.0.1#1** (`overrides`) and every other port through + pins FFmpeg to **8.1.2#3** (`overrides`) and every other port through `builtin-baseline`; the tree lands in `vcpkg_installed/` and jobs point `FFMPEG_DIR`/`PKG_CONFIG_PATH` at it. The C/C++ libraries outside that set (OCIO is vendored, the rest come from the system @@ -97,7 +97,7 @@ cargo test --workspace # Linux: see "headless tests" below > **CI/CD note**: the GitHub Windows CI/CD no longer uses this path — it > builds MSVC-ABI on `warp-windows-2025-vs2026-x64-16x` with vcpkg -> manifest mode (`vcpkg.json` at the repo root: FFmpeg 9.0.1 with every +> manifest mode (`vcpkg.json` at the repo root: FFmpeg 8.1.2 with every > free codec + hwaccel, pkgconf, librsvg, all pinned by > `overrides`/`builtin-baseline`) and the vendored static OCIO. The > MSYS2 flow below remains the documented local-build alternative. diff --git a/vcpkg.json b/vcpkg.json index e139fb33c..1d3a573ef 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -1,7 +1,7 @@ { "name": "oak", "version": "0.5.0", - "$comment": "FFmpeg (+ pkgconf, librsvg on Windows) for every desktop platform CI/CD builds — Linux, macOS and Windows — with the project's feature set (every free codec + hwaccel, mirroring tooling/ffmpeg/build-ffmpeg.sh's configure switches). Local builds may keep using tooling/install-deps.sh + tooling/ffmpeg/build-ffmpeg.sh. ffmpeg is pinned to 9.0.1#1 via overrides; builtin-baseline pins the rest of the port tree.", + "$comment": "FFmpeg (+ pkgconf, librsvg on Windows) for every desktop platform CI/CD builds — Linux, macOS and Windows — with the project's feature set (every free codec + hwaccel, mirroring tooling/ffmpeg/build-ffmpeg.sh's configure switches). Local builds may keep using tooling/install-deps.sh + tooling/ffmpeg/build-ffmpeg.sh. ffmpeg is pinned to 8.1.2#3 via overrides (matching the ffmpeg-next 8.x binding); builtin-baseline pins the rest of the port tree.", "builtin-baseline": "771b0a2e7c473c3a6bee56553be4d5bb32bb653c", "dependencies": [ { @@ -15,7 +15,7 @@ "vpx", "openh264", "openjpeg", - "png", + "zlib", "theora", "webp", "mp3lame",