Files
iptvnator/vendor/embedded-mpv/README.md
4gray 8fdac824fd feat(packaging): ship Linux embedded MPV frame-copy runtime (#1200)
* docs: design Linux frame-copy packaging

* docs: plan Linux frame-copy packaging

* feat(packaging): define Linux frame-copy profiles

* fix(packaging): reject inherited profile names

* feat(embedded-mpv): validate staged Linux runtime

* fix(embedded-mpv): require Linux source packages

* fix(embedded-mpv): harden Linux runtime staging

* feat(embedded-mpv): build LGPL Linux runtime

* fix(embedded-mpv): pin Linux runtime inputs

* feat(embedded-mpv): build relocatable Linux helper

* fix(embedded-mpv): require bundled Linux runtime

* fix(embedded-mpv): make Linux runtime portable

* feat(packaging): ship Linux frame-copy artifacts

* fix(embedded-mpv): verify Linux helper linkage

* fix(packaging): enforce Linux frame-copy isolation

* fix(embedded-mpv): pin Linux display data

* docs(embedded-mpv): document Linux frame-copy packaging

* feat(embedded-mpv): probe Linux frame-copy runtime

* test(embedded-mpv): smoke packaged Linux frame-copy

* docs(embedded-mpv): clarify Linux system runtime baseline

* fix(embedded-mpv): harden Linux runtime capability gate

* ci: verify Linux frame-copy packages

* test(embedded-mpv): harden packaged Linux smoke

* test(embedded-mpv): preserve packaged GL mode

* test(packaging): harden Linux package probes

* fix(embedded-mpv): enable private Snap shared memory

* fix(embedded-mpv): sanitize Linux helper environment

* fix(packaging): enforce private Snap memory semantics

* fix(packaging): reject ambiguous Snap memory metadata

* fix(embedded-mpv): prioritize trusted Snap GL

* fix(packaging): reject advanced Snap YAML semantics

* fix(packaging): reject arbitrary Snap YAML aliases

* feat(packaging): ship Linux runtime license notices

* docs(embedded-mpv): document Linux runtime distribution

* fix(packaging): parse Snap trailing comments safely

* fix(release): gate Snap publish on public source release

* fix(packaging): strip VCS metadata from source bundle

* docs(packaging): clarify Linux source release gate

* test(embedded-mpv): smoke missing bundled libmpv

* style(embedded-mpv): format final validation inputs

* fix(e2e): satisfy fixture index signature typing

* fix(ci): declare fontconfig gperf generator

* fix(embedded-mpv): hash runtime cache identities

* fix(packaging): harden Linux frame-copy delivery

* fix(packaging): tighten runtime delivery gates

* fix(ci): decouple Linux runtime matrix

* fix(packaging): harden Linux frame-copy delivery

* fix(packaging): validate Linux frame-copy runtimes

* fix(packaging): scope Snap Electron library checks

* feat(packaging): ship Linux frame-copy runtimes

* fix(packaging): improve Linux runtime smoke diagnostics

* fix(packaging): expose bounded helper probe details

* test(packaging): trace Snap EGL probe failures

* fix(packaging): prefer core22 ABI in Snap helper

* fix(packaging): bound helper probe capture

* fix(packaging): harden Linux frame-copy releases

* fix(packaging): canonicalize libplacebo submodule identity

* fix(packaging): make source archive inspection portable

* fix(packaging): harden Snap release verification
2026-07-18 17:28:22 +02:00

48 lines
2.3 KiB
Markdown

# Embedded MPV Runtime Artifacts
This directory is the staging location for generated embedded MPV runtime/build
artifacts.
Generated architecture folders are expected at:
- `vendor/embedded-mpv/darwin-arm64/`
- `vendor/embedded-mpv/darwin-x64/`
- `vendor/embedded-mpv/win32-x64/`
- `vendor/embedded-mpv/linux-x64/`
Each generated folder must contain `include/mpv/client.h` and
`runtime-manifest.json`. Platform runtime/build inputs live under `lib/` or
`bin/`. In particular, `linux-x64/lib/` contains the pinned, dynamically linked
LGPL-compatible libmpv closure used to link the out-of-process frame-copy
helper. `linux-x64/notices/` contains the generated
`embedded-mpv-notices.json`, `THIRD_PARTY_NOTICES.txt`, and exact
`licenses/<package>/**` tree. The generated runtime directories are ignored by
git; generate, stage, or restore them before building the Electron backend.
Linux package profiles consume that one staged x64 source runtime differently:
- DEB/RPM/Pacman remove the private closure and declare the system libmpv
dependency.
- AppImage/Snap/Flatpak retain the manifest-declared closure under
`app.asar.unpacked/electron-backend/native/lib/` and flatten the validated
notice manifest, aggregate notice, and `licenses/**` tree beside it.
- The strict Snap resolves the helper's remaining graphics interfaces through
the external `mesa-core22` content provider at `$SNAP/graphics`; that shared
provider is not staged below `vendor/embedded-mpv/`, bundled into IPTVnator,
or included in IPTVnator's source/notices archive.
- DEB/RPM/Pacman and marker-only packages do not retain bundled-runtime
notices or license files.
- Non-x64 Linux packages retain no native artifacts and ship only the
unavailable marker.
- Electron Builder excludes the staged native tree from `app.asar`; only
`afterPack` writes the profile-specific unpacked payload, and package
verification rejects archived native entries.
The DEB dependency is specifically `libmpv2` (verified on Ubuntu 24.04+).
Ubuntu 22.04 provides `libmpv1`; use the x64 AppImage there.
Only `iptvnator_mpv_helper` may link libmpv. Electron,
`embedded_mpv.node`, and `embedded_mpv_frame_reader.node` must remain free of
direct libmpv dependencies. See `tools/embedded-mpv/README.md` and
`docs/architecture/embedded-mpv-native.md`.