packaging: ship render worker on Linux, ffmpeg_bridge.dll on Windows
- Linux: olive-render-worker had no install rule, so it was missing from the AppImage, deb, rpm and Arch packages even though RenderWorkerPool spawns it from applicationDirPath(); install it next to oak-editor (verified: RPATH resolution of libffmpeg_bridge works for editor, worker and liboakgl from the installed layout) - Windows: ffmpeg_bridge.dll is built outside app/ and is invisible to the ntldd dependency walk, so the NSIS installer shipped without it (and without the av*.dll it pulls in); copy it explicitly and include it in the dependency loop - AppImage verification now also checks oak-render-worker, liboakgl.so, libffmpeg_bridge.so and ldd resolution of all shipped binaries
This commit is contained in:
@@ -64,10 +64,13 @@ jobs:
|
|||||||
if [ -f build/app/oakvulkan.dll ]; then
|
if [ -f build/app/oakvulkan.dll ]; then
|
||||||
cp build/app/oakvulkan.dll app/packaging/windows/nsis/oak-editor/
|
cp build/app/oakvulkan.dll app/packaging/windows/nsis/oak-editor/
|
||||||
fi
|
fi
|
||||||
|
# The FFmpeg bridge DLL is built outside app/ and is not reachable
|
||||||
|
# via PATH, so ntldd cannot discover it from the executables alone
|
||||||
|
cp build/ffmpeg_bridge/bin/ffmpeg_bridge.dll app/packaging/windows/nsis/oak-editor/
|
||||||
windeployqt6 app/packaging/windows/nsis/oak-editor/oak-editor.exe
|
windeployqt6 app/packaging/windows/nsis/oak-editor/oak-editor.exe
|
||||||
# Copy all non-Qt MSYS2 DLLs recursively for every binary we ship
|
# Copy all non-Qt MSYS2 DLLs recursively for every binary we ship
|
||||||
cd app/packaging/windows/nsis/oak-editor
|
cd app/packaging/windows/nsis/oak-editor
|
||||||
for binary in oak-editor.exe oak-render-worker.exe oakgl.dll oakvulkan.dll; do
|
for binary in oak-editor.exe oak-render-worker.exe oakgl.dll oakvulkan.dll ffmpeg_bridge.dll; do
|
||||||
[ -f "$binary" ] || continue
|
[ -f "$binary" ] || continue
|
||||||
for l in $(ntldd -R "$binary" | grep -E 'mingw64|ucrt64|clang64' | sed 's/^[ \t]*//' | cut -d' ' -f3); do
|
for l in $(ntldd -R "$binary" | grep -E 'mingw64|ucrt64|clang64' | sed 's/^[ \t]*//' | cut -d' ' -f3); do
|
||||||
cp -v "$l" .
|
cp -v "$l" .
|
||||||
@@ -350,6 +353,15 @@ jobs:
|
|||||||
ls AppDir/usr/lib/libOpenColorIO.so* || (echo "Missing libOpenColorIO" && exit 1)
|
ls AppDir/usr/lib/libOpenColorIO.so* || (echo "Missing libOpenColorIO" && exit 1)
|
||||||
ls AppDir/usr/lib/libportaudio.so* || (echo "Missing libportaudio" && exit 1)
|
ls AppDir/usr/lib/libportaudio.so* || (echo "Missing libportaudio" && exit 1)
|
||||||
ls AppDir/usr/lib/libOpenEXR*.so* || (echo "Missing libOpenEXR" && exit 1)
|
ls AppDir/usr/lib/libOpenEXR*.so* || (echo "Missing libOpenEXR" && exit 1)
|
||||||
|
# Ensure Oak's own binaries and shared libraries are present
|
||||||
|
ls AppDir/usr/bin/oak-editor || (echo "Missing oak-editor" && exit 1)
|
||||||
|
ls AppDir/usr/bin/oak-render-worker || (echo "Missing oak-render-worker" && exit 1)
|
||||||
|
ls AppDir/usr/lib/liboakgl.so || (echo "Missing liboakgl.so" && exit 1)
|
||||||
|
ls AppDir/usr/ffmpeg_bridge/bin/libffmpeg_bridge.so || (echo "Missing libffmpeg_bridge.so" && exit 1)
|
||||||
|
# Ensure every shipped binary resolves all of its dependencies
|
||||||
|
! ldd AppDir/usr/bin/oak-editor | grep "not found"
|
||||||
|
! ldd AppDir/usr/bin/oak-render-worker | grep "not found"
|
||||||
|
! ldd AppDir/usr/lib/liboakgl.so | grep "not found"
|
||||||
|
|
||||||
- name: Upload artifact
|
- name: Upload artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
|
|||||||
+3
-1
@@ -331,7 +331,9 @@ elseif (APPLE)
|
|||||||
endif ()
|
endif ()
|
||||||
elseif (UNIX)
|
elseif (UNIX)
|
||||||
# Set Linux-specific properties for application
|
# Set Linux-specific properties for application
|
||||||
install(TARGETS olive-editor RUNTIME DESTINATION bin)
|
# The render worker must ship next to oak-editor: RenderWorkerPool spawns
|
||||||
|
# it from QCoreApplication::applicationDirPath()
|
||||||
|
install(TARGETS olive-editor olive-render-worker RUNTIME DESTINATION bin)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# Set link libraries
|
# Set link libraries
|
||||||
|
|||||||
Reference in New Issue
Block a user