Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 8 additions & 19 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -138,10 +138,8 @@ jobs:
set -euo pipefail
mkdir -p "$RUNNER_TEMP/ffmpeg-runtime"
cd "$RUNNER_TEMP/ffmpeg-runtime"
curl -L --fail --silent --show-error -o ffmpeg-linux.tar.xz \
https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-09-09-14-51/ffmpeg-n8.1.2-51-g7ba069f4f1-linux64-gpl-8.1.tar.xz
echo "1288c1e46efce263651f5b10755f9ef11419a91558407fe61cc178aa9869fa1b ffmpeg-linux.tar.xz" | shasum -a 256 -c -
tar -xf ffmpeg-linux.tar.xz
python -m pip install --disable-pip-version-check pyinstaller==6.19.0
python "$GITHUB_WORKSPACE/scripts/provision_pinned_runtime.py" --platform linux --output-root "$PWD"
bundle_dir="$(find "$PWD" -mindepth 1 -maxdepth 1 -type d -name 'ffmpeg-*' -print -quit)"
test -x "$bundle_dir/bin/ffmpeg"
test -x "$bundle_dir/bin/ffprobe"
Expand Down Expand Up @@ -172,10 +170,8 @@ jobs:
set -euo pipefail
mkdir -p "$RUNNER_TEMP/ffmpeg-runtime"
cd "$RUNNER_TEMP/ffmpeg-runtime"
curl -L --fail --silent --show-error -o ffmpeg-linux.tar.xz \
https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-09-09-14-51/ffmpeg-n8.1.2-51-g7ba069f4f1-linux64-gpl-8.1.tar.xz
echo "1288c1e46efce263651f5b10755f9ef11419a91558407fe61cc178aa9869fa1b ffmpeg-linux.tar.xz" | shasum -a 256 -c -
tar -xf ffmpeg-linux.tar.xz
python -m pip install --disable-pip-version-check pyinstaller==6.19.0
python "$GITHUB_WORKSPACE/scripts/provision_pinned_runtime.py" --platform linux --output-root "$PWD"
bundle_dir="$(find "$PWD" -mindepth 1 -maxdepth 1 -type d -name 'ffmpeg-*' -print -quit)"
test -x "$bundle_dir/bin/ffmpeg"
test -x "$bundle_dir/bin/ffprobe"
Expand Down Expand Up @@ -323,13 +319,8 @@ jobs:
run: |
$runtimeDir = Join-Path $env:RUNNER_TEMP "ffmpeg-runtime"
New-Item -ItemType Directory -Path $runtimeDir -Force | Out-Null
$archive = Join-Path $runtimeDir "ffmpeg-win.zip"
Invoke-WebRequest -Uri "https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-09-09-14-51/ffmpeg-n8.1.2-51-g7ba069f4f1-win64-gpl-8.1.zip" -OutFile $archive
$actualHash = (Get-FileHash -Algorithm SHA256 -Path $archive).Hash.ToLowerInvariant()
if ($actualHash -ne "4e40699fa864811312d6c1895ea4873beaf8475e1188563fee57fac860554601") {
throw "Unexpected FFmpeg archive hash: $actualHash"
}
Expand-Archive -LiteralPath $archive -DestinationPath $runtimeDir -Force
python -m pip install --disable-pip-version-check pyinstaller==6.19.0
python scripts/provision_pinned_runtime.py --platform win --output-root $runtimeDir
$bundleDir = Get-ChildItem -LiteralPath $runtimeDir -Directory | Where-Object { $_.Name -like "ffmpeg-*" } | Select-Object -First 1
if (-not $bundleDir) { throw "Expanded FFmpeg bundle directory not found" }
$ffmpeg = Join-Path $bundleDir.FullName "bin\\ffmpeg.exe"
Expand Down Expand Up @@ -535,10 +526,8 @@ jobs:
set -euo pipefail
mkdir -p "$RUNNER_TEMP/ffmpeg-runtime"
cd "$RUNNER_TEMP/ffmpeg-runtime"
curl -L --fail --silent --show-error -o ffmpeg-linux.tar.xz \
https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-09-09-14-51/ffmpeg-n8.1.2-51-g7ba069f4f1-linux64-gpl-8.1.tar.xz
echo "1288c1e46efce263651f5b10755f9ef11419a91558407fe61cc178aa9869fa1b ffmpeg-linux.tar.xz" | shasum -a 256 -c -
tar -xf ffmpeg-linux.tar.xz
python -m pip install --disable-pip-version-check pyinstaller==6.19.0
python "$GITHUB_WORKSPACE/scripts/provision_pinned_runtime.py" --platform linux --output-root "$PWD"
bundle_dir="$(find "$PWD" -mindepth 1 -maxdepth 1 -type d -name 'ffmpeg-*' -print -quit)"
test -x "$bundle_dir/bin/ffmpeg"
test -x "$bundle_dir/bin/ffprobe"
Expand Down
6 changes: 2 additions & 4 deletions .github/workflows/release-preflight.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,8 @@ jobs:
sudo apt-get install -y --no-install-recommends openssl ripgrep
mkdir -p "$RUNNER_TEMP/ffmpeg-runtime"
cd "$RUNNER_TEMP/ffmpeg-runtime"
curl -L --fail --silent --show-error -o ffmpeg-linux.tar.xz \
https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-09-09-14-51/ffmpeg-n8.1.2-51-g7ba069f4f1-linux64-gpl-8.1.tar.xz
echo "1288c1e46efce263651f5b10755f9ef11419a91558407fe61cc178aa9869fa1b ffmpeg-linux.tar.xz" | shasum -a 256 -c -
tar -xf ffmpeg-linux.tar.xz
python -m pip install --disable-pip-version-check pyinstaller==6.19.0
python "$GITHUB_WORKSPACE/scripts/provision_pinned_runtime.py" --platform linux --output-root "$PWD"
bundle_dir="$(find "$PWD" -mindepth 1 -maxdepth 1 -type d -name 'ffmpeg-*' -print -quit)"
test -x "$bundle_dir/bin/ffmpeg"
test -x "$bundle_dir/bin/ffprobe"
Expand Down
4 changes: 3 additions & 1 deletion client/ENCODINGDB_TEST_SUITE_V1.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ python3 scripts/test_suite_drift_check.py

The materializer verifies archive, metadata, notices and every reference, then installs matching client/server resources. Run it before native builds or Docker builds. Frozen references have no synthetic fallback; `build_test_suite_v1.py --rewrite-manifest` refuses a frozen suite.

Packaged clients obtain the archive beside the executable or through the manifest download URLs, with verified cache reuse and atomic extraction. Explicit overrides: `ENCODINGDB_SUITE_CACHE_DIR`, `ENCODINGDB_SUITE_PACK_PATH`, `ENCODINGDB_SUITE_PACK_URL`, and `ENCODINGDB_QUICK_CLIP_ID`.
Packaged clients reuse hash-verified cached clips and prefer the separately addressable clips declared in `clip-distribution.json` when those assets are published. The checked-in per-clip inventory is staged but **not published** yet; current public clients still use the external 1.51 GB pack. A full-pack fallback states its transfer size before downloading. `ENCODINGDB_ALLOW_FULL_PACK=0` refuses that fallback, and `ENCODINGDB_SUITE_CLIP_BASE_URL` selects a staged per-clip host for testing. Other overrides: `ENCODINGDB_SUITE_CACHE_DIR`, `ENCODINGDB_SUITE_PACK_PATH`, `ENCODINGDB_SUITE_PACK_URL`, and `ENCODINGDB_QUICK_CLIP_ID`.

`scripts/prepare_client_suite_distribution.py --clip-bundle-out DIR` stages flat, unique release-asset filenames with exactly the frozen clip bytes and bound license notices. Staging does not upload them or activate public URLs. Publication and actual download verification belong to the release gate in PLA-90.

Per-clip attributions, modification notices and license texts travel inside the pack and are hash-bound to its inventory. Third-party CC BY media is not relabeled CC0 or covered by Apache-2.0.

Expand Down
Loading
Loading