From 37fb7e41ee2968bf29b60c2da5f005957ea25fc3 Mon Sep 17 00:00:00 2001 From: 4gray Date: Mon, 27 Apr 2026 09:15:24 +0200 Subject: [PATCH] ci(build): include Vulkan-Headers submodule in macOS runtime build process Entire-Checkpoint: c6e522b4276c --- docs/architecture/embedded-mpv-native.md | 2 +- tools/embedded-mpv/README.md | 2 +- tools/embedded-mpv/build-macos-runtime.mjs | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/architecture/embedded-mpv-native.md b/docs/architecture/embedded-mpv-native.md index 86c93c44d..b990796a3 100644 --- a/docs/architecture/embedded-mpv-native.md +++ b/docs/architecture/embedded-mpv-native.md @@ -122,7 +122,7 @@ pnpm embedded-mpv:build-runtime -- arm64 /tmp/embedded-mpv-prefix pnpm embedded-mpv:stage-runtime -- arm64 /tmp/embedded-mpv-prefix ``` -The CI builder pins FFmpeg `8.1`, mpv `0.41.0`, libplacebo `7.360.1`, libass `0.17.3`, FreeType `2.13.3`, FriBidi `1.0.16`, and HarfBuzz `8.5.0`. FFmpeg disables autodetected external libraries so Homebrew libraries cannot silently enter the runtime. Libplacebo is checked out from git with the OpenGL-related submodules required by its Meson build because the generated GitHub archive does not include submodule contents. The generated manifest records source URLs, archive SHA-256 values where applicable, libplacebo git commit/submodule metadata, FFmpeg configure flags, and mpv Meson flags. The staging step normalizes that manifest to `origin: vendored-lgpl`, which release package validation requires. +The CI builder pins FFmpeg `8.1`, mpv `0.41.0`, libplacebo `7.360.1`, libass `0.17.3`, FreeType `2.13.3`, FriBidi `1.0.16`, and HarfBuzz `8.5.0`. FFmpeg disables autodetected external libraries so Homebrew libraries cannot silently enter the runtime. Libplacebo is checked out from git with the submodules required by its Meson build because the generated GitHub archive does not include submodule contents. Even with Vulkan disabled, libplacebo still compiles Vulkan stubs and needs `3rdparty/Vulkan-Headers`. The generated manifest records source URLs, archive SHA-256 values where applicable, libplacebo git commit/submodule metadata, FFmpeg configure flags, and mpv Meson flags. The staging step normalizes that manifest to `origin: vendored-lgpl`, which release package validation requires. The Electron backend build consumes the staged runtime, copies Mach-O runtime files into the native build output, and rewrites Mach-O paths so `embedded_mpv.node` loads `@loader_path/lib/libmpv.2.dylib` instead of a machine-local Homebrew path. After `install_name_tool` rewrites any addon or runtime binary, the build re-signs that binary with an ad-hoc signature for local development. Release packaging still performs the normal app signing and notarization later. diff --git a/tools/embedded-mpv/README.md b/tools/embedded-mpv/README.md index 1e711bec3..cd29b59d6 100644 --- a/tools/embedded-mpv/README.md +++ b/tools/embedded-mpv/README.md @@ -61,7 +61,7 @@ The builder currently pins: - FFmpeg `8.1`, configured without `--enable-gpl` or `--enable-nonfree`, and with autodetected external libraries disabled - mpv `0.41.0`, configured with `-Dlibmpv=true -Dgpl=false` -- libplacebo `7.360.1`, checked out from git with the OpenGL-related submodules required by its Meson build +- libplacebo `7.360.1`, checked out from git with the `glad`, Python template, `fast_float`, and `Vulkan-Headers` submodules required by its Meson build - libass `0.17.3` plus FreeType, FriBidi, and HarfBuzz The build manifest records source URLs, downloaded archive SHA-256 values where applicable, libplacebo git commit/submodule metadata, and the exact FFmpeg/mpv flags. The staged manifest is normalized to `origin: vendored-lgpl`, which is the only embedded MPV runtime origin allowed in required macOS release packaging. diff --git a/tools/embedded-mpv/build-macos-runtime.mjs b/tools/embedded-mpv/build-macos-runtime.mjs index 5520bf505..f15e2777b 100644 --- a/tools/embedded-mpv/build-macos-runtime.mjs +++ b/tools/embedded-mpv/build-macos-runtime.mjs @@ -272,6 +272,7 @@ function cloneGitSource(sourcePackage) { '3rdparty/jinja', '3rdparty/markupsafe', '3rdparty/fast_float', + '3rdparty/Vulkan-Headers', ], { cwd: packageSourcePath } ); @@ -288,6 +289,7 @@ function cloneGitSource(sourcePackage) { '3rdparty/jinja', '3rdparty/markupsafe', '3rdparty/fast_float', + '3rdparty/Vulkan-Headers', ], { cwd: packageSourcePath } )