Skip to content

Expand x265 CI to macOS/AArch64/Windows with parallel multilib builds and binary-reuse smoke tests - #942

Merged
kirithika7 merged 1 commit into
Multicorewareinc:masterfrom
Akilan-Sivakumar:github-ci
Aug 12, 2026
Merged

Expand x265 CI to macOS/AArch64/Windows with parallel multilib builds and binary-reuse smoke tests#942
kirithika7 merged 1 commit into
Multicorewareinc:masterfrom
Akilan-Sivakumar:github-ci

Conversation

@Akilan-Sivakumar

Copy link
Copy Markdown
Collaborator

Summary

Expands the x265 CI pipeline from Linux-only to four platforms (Linux, macOS, AArch64 cross+QEMU, Windows), consolidates the per-suite test jobs into a per-platform test matrix, and cuts wall-clock time through build caching, parallelized multilib linking, and smoke-test binary reuse.

What changed

Platform coverage

  • Added macOS (native, Apple Silicon), AArch64 (cross-compiled + QEMU user-mode), and Windows (MSVC) build + test jobs, matching the existing Linux job's matrix shape (8-bit / 10-bit / 12-bit / multilib).
  • Consolidated the seven separate per-suite test jobs (test-cli-presets, test-rate-control, …) into one job per platform with a category matrix (presets-tune, rate-control, encoding-features, analysis-reuse, real-world, threading, hbd).

Build matrix

  • Added Debug builds alongside the existing Release builds, as a new config: [Release, Debug] matrix dimension on Linux and Windows.
  • Parallelized multilib linking: the 12-bit/10-bit components now build as extra parallel legs of the main build matrix (build-linux/build-windows); a thin build-linux-multilib/build-windows-multilib job downloads both component libs and does only the final 8-bit link step. Previously all three steps ran sequentially in one job.

Caching

  • ccache/sccache keys are now scoped by PR number (in addition to branch/variant), preventing cross-PR cache poisoning under pull_request_target, whose cache scope is otherwise tied only to the base branch.

Bug fixes

  • Windows builds were intermittently crashing at CMake-configure time because the checkout didn't fetch git tags, and x265's Windows version-string logic needs a tag present to embed into the resource file. Fixed by fetching full git history and tags during checkout.
  • The Windows multilib build was uploading the wrong shared-library filename (x265.dll instead of the correct libx265.dll), so jobs that consumed that artifact couldn't find the library. Fixed the artifact path.
  • macOS builds were printing Homebrew warnings about an untrusted third-party tap (aws/tap) on every run. Fixed by untapping it before installing dependencies.
  • sccache is now pinned to v0.17.0 and downloaded directly from GitHub Releases instead of querying api.github.com/.../releases/latest, removing a flaky dependency on GitHub's unauthenticated API rate limit (60 req/hr, shared across all Actions runners globally).

Smoke tests

  • smoke-linux/smoke-windows now reuse the CI's own prebuilt binaries via smoke-test.py --no-make --no-bench instead of having the harness rebuild from source

AArch64 QEMU tuning

  • Trimmed the heaviest real-world test case's frame count (150 → 60) to reduce QEMU emulation time without dropping preset coverage.

Cleanup

  • Removed unused "download multilib binary" steps from all four test-* jobs (binary was fetched but never invoked in any test command).
  • Simplified needs: graphs to only what's functionally required: smoke-* depends on the multilib link job only (base build is covered transitively); summary-report depends only on the test-* jobs it actually consumes artifacts from.

@galad87

galad87 commented Aug 11, 2026

Copy link
Copy Markdown

A bit unrelated, but not too unrelated, still a macOS aarch64 cross-compiling issue, and my message over there was ignored: can #877 be merged?

@kirithika7
kirithika7 merged commit 5fb3c9f into Multicorewareinc:master Aug 12, 2026
29 checks passed
@Akilan-Sivakumar
Akilan-Sivakumar deleted the github-ci branch August 12, 2026 10:07
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.

3 participants