Stage the plugin into the directory layout OBS actually searches
Build / macOS (macos-latest) (push) Successful in 32s
Build / Linux (ubuntu-24.04) (push) Successful in 46s
Build / Windows (windows-latest) (push) Failing after 9m35s

The staged package put the module in build/package/bin. OBS does not look
there. From AddExtraModulePaths() in obs-studio's UI/window-basic-main.cpp,
the per-user plugin layout on Linux and Windows is:

  <config>/obs-studio/plugins/<name>/bin/64bit/<name>.{so,dll}
  <config>/obs-studio/plugins/<name>/data/

so build/package/ now uses bin/64bit and is a straight drop-in. Re-verified in
the headless libobs harness from the new path: the module loads, both sources
connect, frames arrive, the camera switch round-trips, and `ldd` on the staged
copy resolves liblivekit and liblivekit_ffi from bin/64bit via $ORIGIN.

macOS deliberately keeps the flat bin/ -- there OBS looks for a
<name>.plugin/Contents/MacOS bundle, which this build does not produce. That
gap is documented in README.md rather than papered over with a directory name
that would only look right.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RL8abRmgFXkVASHkkqiJbE
This commit is contained in:
2026-09-06 22:36:01 -07:00
co-authored by Claude Sonnet 5
parent 524e78c1a6
commit 6829dd545a
3 changed files with 39 additions and 13 deletions
+5 -5
View File
@@ -45,9 +45,9 @@ jobs:
- name: Show what was built
run: |
ls -la build/package/bin build/package/data/locale build/package/licenses
ldd build/package/bin/streamer-tools-camera.so | grep -E 'obs|livekit'
nm -D build/package/bin/streamer-tools-camera.so | grep -E ' T obs_module_(load|unload)'
ls -la build/package/bin/64bit build/package/data/locale build/package/licenses
ldd build/package/bin/64bit/streamer-tools-camera.so | grep -E 'obs|livekit'
nm -D build/package/bin/64bit/streamer-tools-camera.so | grep -E ' T obs_module_(load|unload)'
- name: Upload plugin
continue-on-error: true
@@ -141,8 +141,8 @@ jobs:
- name: Show what was built
run: |
if (Test-Path build\package\bin) {
Get-ChildItem build\package\bin
if (Test-Path build\package\bin\64bit) {
Get-ChildItem build\package\bin\64bit
} else {
Write-Host "no plugin module was built (core library only)"
}