build: rebrand output artifacts to Oak and fix macOS QML deployment

- Rename macOS bundle output from Olive.app to Oak.app.
- Rename editor binary to oak-editor and render worker to oak-render-worker.
- Rename crash handler output to oak-crashhandler.
- Update worker lookup, NSIS installer, Linux desktop/AppRun, crashhandler
  symbol paths, and documentation for the new binary names.
- Update CD workflow paths and add -qmldir flags to macdeployqt so QtQuick
  / QML plugins required by KDDockWidgets are bundled, fixing the launch
  crash on macOS.
- Update user-facing GitHub URLs to OakVideoEditorCommunity/oak.
This commit is contained in:
2026-07-13 15:26:15 +08:00
parent a4a2903e49
commit f0d41eae52
36 changed files with 70 additions and 1285 deletions
+9 -6
View File
@@ -250,7 +250,9 @@ endif()
# Ensure the render worker is always built together with the editor on every platform.
add_dependencies(olive-editor olive-render-worker)
# Add render worker process (olive-render-worker).
set_target_properties(olive-editor PROPERTIES OUTPUT_NAME "oak-editor")
# Add render worker process (oak-render-worker).
# Reuses the libolive-editor object library so the worker shares the exact same render/node/codec
# code as the editor. It is a headless app that owns its own offscreen GL context. The link set is
# currently the full OLIVE_LIBRARIES for simplicity; trimming UI-only dependencies is a later-phase
@@ -260,6 +262,7 @@ add_executable(olive-render-worker
$<TARGET_OBJECTS:libolive-editor>
$<TARGET_OBJECTS:olive-version-obj>
)
set_target_properties(olive-render-worker PROPERTIES OUTPUT_NAME "oak-render-worker")
if (APPLE)
target_sources(olive-render-worker PRIVATE render/worker/workermain_mac.mm)
target_link_libraries(olive-render-worker PRIVATE "-framework Cocoa")
@@ -292,7 +295,7 @@ if (WIN32)
elseif(APPLE)
# Set Mac application icon
set(OLIVE_ICON packaging/macos/olive.icns)
set(OLIVE_ICON packaging/macos/oak.icns)
target_sources(olive-editor PRIVATE ${OLIVE_ICON})
# Set Mac bundle properties
@@ -300,24 +303,24 @@ elseif(APPLE)
MACOSX_BUNDLE TRUE
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/packaging/macos/MacOSXBundleInfo.plist.in
MACOSX_BUNDLE_GUI_IDENTIFIER org.oakvideoeditor.Oak
MACOSX_BUNDLE_ICON_FILE olive.icns
MACOSX_BUNDLE_ICON_FILE oak.icns
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION}
MACOSX_BUNDLE_BUNDLE_NAME "Oak Video Editor"
MACOSX_BUNDLE_INFO_STRING "Oak Video Editor ${PROJECT_LONG_VERSION}"
MACOSX_BUNDLE_COPYRIGHT "©2018-2021 Olive Studios LLC and others. Fork maintained by Oak Video Editor Team."
RESOURCE "${OLIVE_ICON}"
OUTPUT_NAME "Olive"
OUTPUT_NAME "Oak"
)
# Copy the render worker and dynamic render backends into the app bundle.
# They are looked up in QCoreApplication::applicationDirPath(), which on
# macOS points to Olive.app/Contents/MacOS.
# macOS points to Oak.app/Contents/MacOS.
add_custom_command(TARGET olive-editor POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_BUNDLE_DIR:olive-editor>/Contents/MacOS
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:olive-render-worker> $<TARGET_BUNDLE_DIR:olive-editor>/Contents/MacOS/
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:oakgl> $<TARGET_BUNDLE_DIR:olive-editor>/Contents/MacOS/
COMMENT "Copying olive-render-worker and render backends into Olive.app"
COMMENT "Copying oak-render-worker and render backends into Oak.app"
)
if (TARGET oakvulkan)
add_custom_command(TARGET olive-editor POST_BUILD
+4 -1
View File
@@ -22,6 +22,9 @@ add_executable(
$<TARGET_OBJECTS:olive-version-obj>
)
# Rename the generated binary to oak-crashhandler so it matches the Oak branding.
set_target_properties(olive-crashhandler PROPERTIES OUTPUT_NAME "oak-crashhandler")
# Disable console appearing on crash handler dialog
set_target_properties(olive-crashhandler PROPERTIES
WIN32_EXECUTABLE TRUE
@@ -52,7 +55,7 @@ set(MINIDUMP_STACKWALK "minidump_stackwalk${CMAKE_EXECUTABLE_SUFFIX}")
if(APPLE)
# Move crash handler executables inside Mac app bundle
add_custom_command(TARGET olive-crashhandler POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different olive-crashhandler $<TARGET_FILE_DIR:olive-editor>
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:olive-crashhandler> $<TARGET_FILE_DIR:olive-editor>
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CRASHPAD_LIBRARY_DIRS}/${CRASHPAD_HANDLER} $<TARGET_FILE_DIR:olive-editor>
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${BREAKPAD_BIN_DIR}/${MINIDUMP_STACKWALK} $<TARGET_FILE_DIR:olive-editor>
)
+6 -6
View File
@@ -124,7 +124,7 @@ QString CrashHandlerDialog::GetSymbolPath()
#elif BUILDFLAG(IS_LINUX)
app_path.cdUp();
symbols_path =
app_path.filePath(QStringLiteral("share/olive-editor/symbols"));
app_path.filePath(QStringLiteral("share/oak-editor/symbols"));
#elif BUILDFLAG(IS_APPLE)
app_path.cdUp();
symbols_path = app_path.filePath(QStringLiteral("Resources/symbols"));
@@ -291,11 +291,11 @@ void CrashHandlerDialog::SendErrorReport()
QString symbol_bin_name;
#if BUILDFLAG(IS_WIN)
symbol_bin_name = QStringLiteral("olive-editor.pdb");
symbol_bin_name = QStringLiteral("oak-editor.pdb");
#elif BUILDFLAG(IS_APPLE)
symbol_bin_name = QStringLiteral("Olive");
symbol_bin_name = QStringLiteral("Oak");
#else
symbol_bin_name = QStringLiteral("olive-editor");
symbol_bin_name = QStringLiteral("oak-editor");
#endif
symbol_dir = QDir(symbol_dir.filePath(symbol_bin_name));
@@ -320,9 +320,9 @@ void CrashHandlerDialog::SendErrorReport()
// Create sym section
QString symbol_filename;
#if BUILDFLAG(IS_APPLE)
symbol_filename = QStringLiteral("Olive.sym");
symbol_filename = QStringLiteral("Oak.sym");
#else
symbol_filename = QStringLiteral("olive-editor.sym");
symbol_filename = QStringLiteral("oak-editor.sym");
#endif
QString symbol_full_path = symbol_dir.filePath(symbol_filename);
QHttpPart sym_part;
+4 -4
View File
@@ -20,16 +20,16 @@
APPDIR=$(readlink -f $(dirname "$0"))
# Custom AppRun that ensures the AppImage doesn't dismount before olive-crashhandler exits
# Custom AppRun that ensures the AppImage doesn't dismount before oak-crashhandler exits
# Run main program
"$APPDIR/usr/bin/olive-editor" "$@"
"$APPDIR/usr/bin/oak-editor" "$@"
# Wait arbitrary amount of time
sleep 5
# While olive-crashhandler exists, keep sleeping
while [[ $(ps -aux | grep olive-crashhandler | grep -v grep) ]]
# While oak-crashhandler exists, keep sleeping
while [[ $(ps -aux | grep oak-crashhandler | grep -v grep) ]]
do
sleep 5
done
@@ -28,8 +28,8 @@
<p xml:lang="id">Oak Video Editor adalah aplikasi edit video bersifat non-linier yang bebas dan gratis, bertujuan untuk memberikan alternatif yang lengkap untuk aplikasi edit video profesional. Ini adalah fork komunitas dari Olive Video Editor.</p>
<p xml:lang="fr">Oak Video Editor est un éditeur vidéo non linéaire libre visant à fournir une alternative complète aux logiciels de montage vidéo professionnels haut de gamme. Il s'agit d'un fork communautaire d'Olive Video Editor.</p>
</description>
<url type="homepage">https://github.com/olive-editor/olive</url>
<url type="bugtracker">https://github.com/olive-editor/olive/issues</url>
<url type="homepage">https://github.com/OakVideoEditorCommunity/oak</url>
<url type="bugtracker">https://github.com/OakVideoEditorCommunity/oak/issues</url>
<screenshots>
<screenshot type="default"><image>https://olivevideoeditor.org/img/screenshot.1600.jpg</image></screenshot>
</screenshots>
@@ -4,7 +4,7 @@ Comment=Professional open-source non-linear video editor
Comment[fr]=Éditeur vidéo non-linéaire open-source professionnel
Comment[it]=Programma di montaggio video professionale open-source
Comment[id]=Aplikasi edit video yang non-linier, profesional serta sumbernya terbuka.
Exec=olive-editor %f
Exec=oak-editor %f
Icon=org.oakvideoeditor.Oak
Terminal=false
Type=Application
@@ -4,9 +4,9 @@
!define MUI_UNICON "uninstall icon.ico"
!define APP_NAME "Oak Video Editor"
!define APP_TARGET "olive-editor"
!define APP_TARGET "oak-editor"
!define MUI_FINISHPAGE_RUN "$INSTDIR\olive-editor.exe"
!define MUI_FINISHPAGE_RUN "$INSTDIR\oak-editor.exe"
SetCompressor lzma
@@ -38,14 +38,14 @@ InstallDir "$PROGRAMFILES32\${APP_NAME}"
Section "Oak Video Editor"
SectionIn RO
SetOutPath $INSTDIR
File /r olive-editor\*
File /r oak-editor\*
# Render worker process must live next to the editor binary
File "olive-editor\olive-render-worker.exe"
File "oak-editor\oak-render-worker.exe"
# Render backends must also live next to the editor binary
File "olive-editor\oakgl.dll"
File /nonfatal "olive-editor\oakvulkan.dll"
File "oak-editor\oakgl.dll"
File /nonfatal "oak-editor\oakvulkan.dll"
WriteUninstaller "$INSTDIR\uninstall.exe"
@@ -69,8 +69,8 @@ Section "Associate *.ove files with Oak Video Editor"
WriteRegStr HKCR ".ove" "" "OakEditor.OVEFile"
WriteRegStr HKCR ".ove" "Content Type" "application/vnd.olive-project"
WriteRegStr HKCR "OakEditor.OVEFile" "" "Oak project file"
WriteRegStr HKCR "OakEditor.OVEFile\DefaultIcon" "" "$INSTDIR\olive-editor.exe,1"
WriteRegStr HKCR "OakEditor.OVEFile\shell\open\command" "" "$\"$INSTDIR\olive-editor.exe$\" $\"%1$\""
WriteRegStr HKCR "OakEditor.OVEFile\DefaultIcon" "" "$INSTDIR\oak-editor.exe,1"
WriteRegStr HKCR "OakEditor.OVEFile\shell\open\command" "" "$\"$INSTDIR\oak-editor.exe$\" $\"%1$\""
System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)'
SectionEnd
+1 -1
View File
@@ -82,7 +82,7 @@ public:
/// Vulkan requested by the user. Falls back to OpenGL until VulkanRenderer is implemented.
kVulkan,
/// Video frames are rendered by an external olive-render-worker process.
/// Video frames are rendered by an external oak-render-worker process.
kMultiProcess,
/// No graphics rendering - used to test core threading logic
+2 -2
View File
@@ -241,9 +241,9 @@ bool DecodeInputFrames(DecoderCache *decoder_cache,
QString WorkerProgramPath()
{
#if defined(Q_OS_WIN)
const QString file = QStringLiteral("olive-render-worker.exe");
const QString file = QStringLiteral("oak-render-worker.exe");
#else
const QString file = QStringLiteral("olive-render-worker");
const QString file = QStringLiteral("oak-render-worker");
#endif
const QString app_dir = QCoreApplication::applicationDirPath();
+1 -1
View File
@@ -547,7 +547,7 @@ int main(int argc, char *argv[])
#endif
QCoreApplication::setOrganizationName(QStringLiteral("oakvideoeditor.org"));
QCoreApplication::setApplicationName(QStringLiteral("olive-render-worker"));
QCoreApplication::setApplicationName(QStringLiteral("oak-render-worker"));
QString backend = QStringLiteral("opengl");
const QStringList args = app.arguments();
+1 -1
View File
@@ -788,7 +788,7 @@ void MainMenu::SequenceCacheClearTriggered()
void MainMenu::HelpFeedbackTriggered()
{
QDesktopServices::openUrl(
QStringLiteral("https://github.com/olive-editor/olive/issues"));
QStringLiteral("https://github.com/OakVideoEditorCommunity/oak/issues"));
}
void MainMenu::Retranslate()