libobs now builds AND installs cleanly on macOS -- libobs.framework, its
headers, and libobsConfig/libobsTargets all land. The configure then fell over
one step later, in the template's own quarantine-clearing step:
xattr: [Errno 13] Permission denied:
'.../.deps/sdk/MacOSX.platform/Developer/SDKs/MacOSX26.5.sdk'
`xattr -r -d com.apple.quarantine "${dependencies_dir}"` recurses, so it
followed the SDK symlink into the read-only system SDK. The symlink moves to
the build directory, where that sweep never reaches it. The xattr call itself
also stops being fatal: clearing quarantine on downloaded dependencies is a
convenience, and it should not be able to take the whole configure down.
Separately, in the adapter: the last-frame-geometry marker is cleared whenever
the session leaves Connected, so the next stream logs its first frame again.
Verified in the headless libobs harness by switching the selected camera to a
dark slot and back -- previously the switch back was silent because the
resolution had not changed, so the log stopped answering "did video come
back". It now reads:
connected to ws://... watching cam-test
video frame 640x360 I420
--- switching camera to 'other-cam'
connected to ws://... watching other-cam
--- switching camera back to 'cam-test'
connected to ws://... watching cam-test
video frame 640x360 I420
status after switch-back: connected
which also confirms the whole change-settings path: each switch mints a fresh
obs:<room>:<nonce> identity and reconnects, with no crash and no stale frame.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RL8abRmgFXkVASHkkqiJbE
47 lines
1.6 KiB
CMake
47 lines
1.6 KiB
CMake
# CMake macOS build dependencies module
|
|
#
|
|
# Adapted from obsproject/obs-plugintemplate. Only change from upstream: qt6
|
|
# is dropped from dependencies_list. This plugin's properties UI is plain
|
|
# obs_properties_*, it never links Qt, and the OBS sub-build is configured
|
|
# with ENABLE_UI=OFF -- so downloading a ~100 MB Qt bundle on every CI run
|
|
# would buy nothing.
|
|
|
|
include_guard(GLOBAL)
|
|
|
|
include(buildspec_common)
|
|
|
|
# _check_dependencies_macos: Set up macOS slice for _check_dependencies
|
|
function(_check_dependencies_macos)
|
|
set(arch universal)
|
|
set(platform macos)
|
|
|
|
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/buildspec.json" buildspec)
|
|
|
|
set(dependencies_dir "${CMAKE_CURRENT_SOURCE_DIR}/.deps")
|
|
set(prebuilt_filename "macos-deps-VERSION-ARCH_REVISION.tar.xz")
|
|
set(prebuilt_destination "obs-deps-VERSION-ARCH")
|
|
set(obs-studio_filename "VERSION.tar.gz")
|
|
set(obs-studio_destination "obs-studio-VERSION")
|
|
set(dependencies_list prebuilt obs-studio)
|
|
|
|
_check_dependencies()
|
|
|
|
# Clearing the quarantine flag on the downloaded dependencies is a
|
|
# convenience, not a correctness requirement, so a failure here must not
|
|
# take the whole configure down with it. Upstream makes it fatal.
|
|
execute_process(
|
|
COMMAND "xattr" -r -d com.apple.quarantine "${dependencies_dir}"
|
|
RESULT_VARIABLE result
|
|
OUTPUT_QUIET
|
|
ERROR_QUIET
|
|
)
|
|
if(NOT result EQUAL 0)
|
|
message(STATUS "Could not clear the quarantine attribute under ${dependencies_dir} (continuing)")
|
|
endif()
|
|
|
|
list(APPEND CMAKE_FRAMEWORK_PATH "${dependencies_dir}/Frameworks")
|
|
set(CMAKE_FRAMEWORK_PATH ${CMAKE_FRAMEWORK_PATH} PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
_check_dependencies_macos()
|