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
+21 -18
View File
@@ -57,17 +57,17 @@ jobs:
- name: Deploy dependencies
shell: msys2 {0}
run: |
mkdir -p app/packaging/windows/nsis/olive-editor
cp build/app/olive-editor.exe app/packaging/windows/nsis/olive-editor/
cp build/app/olive-render-worker.exe app/packaging/windows/nsis/olive-editor/
cp build/app/oakgl.dll app/packaging/windows/nsis/olive-editor/
mkdir -p app/packaging/windows/nsis/oak-editor
cp build/app/oak-editor.exe app/packaging/windows/nsis/oak-editor/
cp build/app/oak-render-worker.exe app/packaging/windows/nsis/oak-editor/
cp build/app/oakgl.dll app/packaging/windows/nsis/oak-editor/
if [ -f build/app/oakvulkan.dll ]; then
cp build/app/oakvulkan.dll app/packaging/windows/nsis/olive-editor/
cp build/app/oakvulkan.dll app/packaging/windows/nsis/oak-editor/
fi
windeployqt6 app/packaging/windows/nsis/olive-editor/olive-editor.exe
windeployqt6 app/packaging/windows/nsis/oak-editor/oak-editor.exe
# Copy all non-Qt MSYS2 DLLs recursively for every binary we ship
cd app/packaging/windows/nsis/olive-editor
for binary in olive-editor.exe olive-render-worker.exe oakgl.dll oakvulkan.dll; do
cd app/packaging/windows/nsis/oak-editor
for binary in oak-editor.exe oak-render-worker.exe oakgl.dll oakvulkan.dll; do
[ -f "$binary" ] || continue
for l in $(ntldd -R "$binary" | grep -E 'mingw64|ucrt64|clang64' | sed 's/^[ \t]*//' | cut -d' ' -f3); do
cp -v "$l" .
@@ -79,7 +79,7 @@ jobs:
run: |
cd app/packaging/windows/nsis
cp "${GITHUB_WORKSPACE}"/LICENSE .
makensis olive.nsi
makensis oak.nsi
mv setup.exe "${GITHUB_WORKSPACE}"/Oak-Video-Editor-Windows-x64.exe
- name: Upload artifact
@@ -130,18 +130,21 @@ jobs:
- name: Deploy Qt dependencies
run: |
export PATH="$(brew --prefix qt@6)/bin:$PATH"
macdeployqt build/app/Olive.app
macdeployqt build/app/Oak.app \
-qmldir=app \
-qmldir=ext/KDDockWidgets/src/qtquick/views/qml \
-verbose=2
# Re-sign after macdeployqt (it breaks signatures when modifying libs)
codesign --force --deep --sign - build/app/Olive.app
codesign --force --deep --sign - build/app/Oak.app
- name: Bundle non-Qt libraries
run: |
mkdir -p build/app/Olive.app/Contents/Frameworks
mkdir -p build/app/Oak.app/Contents/Frameworks
python3 << 'PYEOF'
import os, shutil, subprocess
APP = "build/app/Olive.app"
BINARY = f"{APP}/Contents/MacOS/Olive"
APP = "build/app/Oak.app"
BINARY = f"{APP}/Contents/MacOS/Oak"
DEST = f"{APP}/Contents/Frameworks"
os.makedirs(DEST, exist_ok=True)
@@ -232,16 +235,16 @@ jobs:
- name: Debug bundle contents
run: |
echo "=== otool -L ==="
otool -L build/app/Olive.app/Contents/MacOS/Olive
otool -L build/app/Oak.app/Contents/MacOS/Oak
echo "=== Frameworks dir ==="
ls -la build/app/Olive.app/Contents/Frameworks/ || echo "(empty)"
ls -la build/app/Oak.app/Contents/Frameworks/ || echo "(empty)"
echo "=== App bundle size ==="
du -sh build/app/Olive.app
du -sh build/app/Oak.app
- name: Create DMG
run: |
hdiutil create \
-srcfolder build/app/Olive.app \
-srcfolder build/app/Oak.app \
-volname "Oak Video Editor" \
-fs HFS+ \
-format UDZO \
+1 -1
View File
@@ -17,7 +17,7 @@
cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
project(olive-editor VERSION 0.3.0 LANGUAGES CXX)
project(olive-editor VERSION 0.4.0 LANGUAGES CXX)
set(PROJECT_VERSION "0.4.0-alpha")
-6
View File
@@ -2,12 +2,6 @@
Thank you for your interest in contributing to Olive!
## Reporting issues
Bug reports help to make the software more stable and usable.
Please read the pinned [issue #1175](https://github.com/olive-editor/olive/issues/1175)
for guidelines before you create a new issue.
## Writing code
Code contributions are welcome. Note that the code base is rapidly changing in
+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()
-69
View File
@@ -1,69 +0,0 @@
# Docker Images
Olive uses Docker containers for continuous integration on Linux.
No Docker images are involved for the Windows and macOS CI.
## Overview
`ci-common` is the shared build image with GCC, Clang and packages that are
needed by most dependent images. It is used to compile Olive's dependencies
in a controlled environment. The final CI image `ci-olive` is assembled from
images maintained by the Olive team as well as from
[aswf-docker](https://github.com/AcademySoftwareFoundation/aswf-docker/).
Dependency hierarchy:
1. `ci-common`
2. `ci-otio`, `ci-crashpad`, `ci-ffmpeg`, `ci-ocio`
3. `ci-olive`
## Usage
Pull images from [Docker Hub](https://hub.docker.com/u/olivevideoeditor):
```
docker pull olivevideoeditor/ci-common:2
docker pull olivevideoeditor/ci-package-otio:0.14.1
docker pull olivevideoeditor/ci-package-crashpad
docker pull olivevideoeditor/ci-package-ffmpeg:5.0
docker pull olivevideoeditor/ci-package-ocio:2022-2.1.1
docker pull olivevideoeditor/ci-olive:2022.2
```
Use `ci-olive` image as local build container, by mounting working copy at
`~/olive` into guest system at `/opt/olive/olive`:
```bash
docker run --rm -it -v ~/olive:/opt/olive/olive olivevideoeditor/ci-olive:2022.2
mkdir build
cd build
cmake .. -G Ninja
cmake --build .
```
Rebuild all images locally:
```
cd docker
docker build -t olivevideoeditor/ci-common:2 -f ci-common/Dockerfile .
docker build -t olivevideoeditor/ci-package-otio:0.14.1 -f ci-otio/Dockerfile .
docker build -t olivevideoeditor/ci-package-crashpad -f ci-crashpad/Dockerfile .
docker build -t olivevideoeditor/ci-package-ffmpeg:5.0 -f ci-ffmpeg/Dockerfile .
docker build -t olivevideoeditor/ci-package-ocio:2022-2.1.1 -f ci-ocio/Dockerfile .
docker build -t olivevideoeditor/ci-olive:2022.2 -f ci-olive/Dockerfile .
```
Note that `2022` in `ci-olive:2022.2` stands for the
[VFX Reference Platform](http://vfxplatform.com/) calendar year and `2` for the
build image revision (should be incremented each time a new image is published).
Publish images:
```
docker push olivevideoeditor/ci-common:2
docker push olivevideoeditor/ci-package-otio:0.14.1
docker push olivevideoeditor/ci-package-crashpad
docker push olivevideoeditor/ci-package-ffmpeg:5.0
docker push olivevideoeditor/ci-package-ocio:2022-2.1.1
docker push olivevideoeditor/ci-olive:2022.2
```
-71
View File
@@ -1,71 +0,0 @@
# Copyright (C) 2022 Olive Team
# Copyright (c) Contributors to the aswf-docker Project. All rights reserved.
# SPDX-License-Identifier: Apache-2.0 OR GPL-3.0-or-later
# Build image (default):
# docker build -t olivevideoeditor/ci-common:2 -f ci-common/Dockerfile .
ARG OLIVE_ORG=olivevideoeditor
ARG ASWF_PKG_ORG=aswftesting
ARG CI_COMMON_VERSION=2
ARG DTS_VERSION=9
ARG CMAKE_VERSION=3.22.3
FROM ${ASWF_PKG_ORG}/ci-package-clang:${CI_COMMON_VERSION} as ci-package-clang
FROM ${ASWF_PKG_ORG}/ci-package-ninja:${CI_COMMON_VERSION} as ci-package-ninja
FROM centos:7 as ci-common
ARG OLIVE_ORG
ARG CI_COMMON_VERSION
ARG DTS_VERSION
ARG CMAKE_VERSION
LABEL maintainer="olivevideoeditor@gmail.com"
LABEL org.opencontainers.image.name="$OLIVE_ORG/ci-common"
LABEL org.opencontainers.image.description="CentOS CI Shared Image"
LABEL org.opencontainers.image.url="http://olivevideoeditor.org"
LABEL org.opencontainers.image.source="https://github.com/olive-editor/olive"
LABEL org.opencontainers.image.vendor="Olive Team"
LABEL org.opencontainers.image.version="1.0"
LABEL org.opencontainers.image.licenses="GPL-3.0-or-later"
USER root
COPY scripts/common/install_yumpackages.sh \
scripts/common/before_build.sh \
scripts/common/copy_new_files.sh \
/tmp/
ENV DTS_VERSION=${DTS_VERSION}
RUN /tmp/install_yumpackages.sh
RUN mkdir /opt/olive
WORKDIR /opt/olive
ENV OLIVE_ORG=${OLIVE_ORG} \
CI_COMMON_VERSION=${CI_COMMON_VERSION} \
CMAKE_VERSION=${CMAKE_VERSION} \
LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64:/opt/rh/httpd24/root/usr/lib64:/opt/rh/devtoolset-${DTS_VERSION}/root/usr/lib64:/opt/rh/devtoolset-${DTS_VERSION}/root/usr/lib:${LD_LIBRARY_PATH} \
PATH=/opt/rh/rh-git218/root/usr/bin:/usr/local/bin:/opt/rh/devtoolset-${DTS_VERSION}/root/usr/bin:/opt/app-root/src/bin:/opt/rh/devtoolset-${DTS_VERSION}/root/usr/bin/:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin
#COPY scripts/common/install_sonar.sh \
# scripts/common/install_ccache.sh \
# /tmp/
COPY --from=ci-package-clang /. /usr/local/
COPY --from=ci-package-ninja /. /usr/local/
#COPY scripts/common/setup_aswfuser.sh /tmp
#RUN /tmp/setup_aswfuser.sh
COPY scripts/base/install_cmake.sh \
/tmp/
RUN export DOWNLOADS_DIR=/tmp/downloads && \
mkdir /tmp/downloads && \
# source /tmp/versions_base.sh && \
/tmp/install_cmake.sh && \
# /tmp/patchup.sh && \
rm -rf /tmp/downloads
# TODO: Remove scripts from /tmp ?
-37
View File
@@ -1,37 +0,0 @@
# Copyright (C) 2022 Olive Team
# SPDX-License-Identifier: GPL-3.0-or-later
# Build image (default):
# docker build -t olivevideoeditor/ci-package-crashpad -f ci-crashpad/Dockerfile .
ARG OLIVE_ORG=olivevideoeditor
ARG CI_COMMON_VERSION=2
FROM ${OLIVE_ORG}/ci-common:${CI_COMMON_VERSION} as ci-crashpad
ARG OLIVE_ORG
ARG CI_COMMON_VERSION
LABEL maintainer="olivevideoeditor@gmail.com"
LABEL org.opencontainers.image.name="$OLIVE_ORG/ci-crashpad"
LABEL org.opencontainers.image.description="CentOS Crashpad Build Image"
LABEL org.opencontainers.image.url="http://olivevideoeditor.org"
LABEL org.opencontainers.image.source="https://github.com/olive-editor/olive"
LABEL org.opencontainers.image.vendor="Olive Team"
LABEL org.opencontainers.image.version="1.0"
LABEL org.opencontainers.image.licenses="GPL-3.0-or-later"
COPY scripts/build_crashpad.sh \
/tmp/
ENV OLIVE_ORG=${OLIVE_ORG} \
CI_COMMON_VERSION=${CI_COMMON_VERSION} \
OLIVE_INSTALL_PREFIX=/usr/local
RUN /tmp/before_build.sh && \
/tmp/build_crashpad.sh && \
/tmp/copy_new_files.sh
FROM scratch as ci-package-crashpad
COPY --from=ci-crashpad /package /
-83
View File
@@ -1,83 +0,0 @@
# Copyright (C) 2022 Olive Team
# SPDX-License-Identifier: GPL-3.0-or-later
# Build image (default):
# docker build -t olivevideoeditor/ci-package-ffmpeg:5.0 -f ci-ffmpeg/Dockerfile .
ARG OLIVE_ORG=olivevideoeditor
ARG CI_COMMON_VERSION=2
ARG FFMPEG_VERSION=5.0
ARG NASM_VERSION=2.15.05
ARG YASM_VERSION=1.3.0
ARG SVTAV1_VERSION=v1.1.0
ARG X265_VERSION=3.5
ARG OGG_VERSION=1.3.5
ARG OPUS_VERSION=1.3.1
ARG VORBIS_VERSION=1.3.7
ARG THEORA_VERSION=1.1.1
ARG VPX_VERSION=1.11.0
ARG WEBP_VERSION=1.2.2
ARG LAME_VERSION=3.100
ARG XVID_VERSION=1.3.7
ARG OPENJPEG_VERSION=2.4.0
ARG LIBPNG_VERSION=1.6.37
# TODO: Make version of x264 selectable?
FROM ${OLIVE_ORG}/ci-common:${CI_COMMON_VERSION} as ci-ffmpeg
ARG OLIVE_ORG
ARG CI_COMMON_VERSION
ARG FFMPEG_VERSION
ARG NASM_VERSION
ARG YASM_VERSION
ARG SVTAV1_VERSION
ARG X265_VERSION
ARG OGG_VERSION
ARG OPUS_VERSION
ARG VORBIS_VERSION
ARG THEORA_VERSION
ARG VPX_VERSION
ARG WEBP_VERSION
ARG LAME_VERSION
ARG XVID_VERSION
ARG OPENJPEG_VERSION
ARG LIBPNG_VERSION
LABEL maintainer="olivevideoeditor@gmail.com"
LABEL org.opencontainers.image.name="$OLIVE_ORG/ci-ffmpeg"
LABEL org.opencontainers.image.description="CentOS FFmpeg Build Image"
LABEL org.opencontainers.image.url="http://olivevideoeditor.org"
LABEL org.opencontainers.image.source="https://github.com/olive-editor/olive"
LABEL org.opencontainers.image.vendor="Olive Team"
LABEL org.opencontainers.image.version="1.0"
LABEL org.opencontainers.image.licenses="GPL-3.0-or-later"
COPY scripts/build_ffmpeg.sh \
/tmp/
ENV OLIVE_ORG=${OLIVE_ORG} \
CI_COMMON_VERSION=${CI_COMMON_VERSION} \
FFMPEG_VERSION=${FFMPEG_VERSION} \
NASM_VERSION=${NASM_VERSION} \
YASM_VERSION=${YASM_VERSION} \
SVTAV1_VERSION=${SVTAV1_VERSION} \
X265_VERSION=${X265_VERSION} \
OGG_VERSION=${OGG_VERSION} \
OPUS_VERSION=${OPUS_VERSION} \
VORBIS_VERSION=${VORBIS_VERSION} \
THEORA_VERSION=${THEORA_VERSION} \
VPX_VERSION=${VPX_VERSION} \
WEBP_VERSION=${WEBP_VERSION} \
LAME_VERSION=${LAME_VERSION} \
XVID_VERSION=${XVID_VERSION} \
OPENJPEG_VERSION=${OPENJPEG_VERSION} \
LIBPNG_VERSION=${LIBPNG_VERSION} \
OLIVE_INSTALL_PREFIX=/usr/local
RUN /tmp/before_build.sh && \
/tmp/build_ffmpeg.sh && \
/tmp/copy_new_files.sh
FROM scratch as ci-package-ffmpeg
COPY --from=ci-ffmpeg /package/. /
-51
View File
@@ -1,51 +0,0 @@
# Copyright (C) 2022 Olive Team
# SPDX-License-Identifier: GPL-3.0-or-later
# Build image (default):
# docker build -t olivevideoeditor/ci-package-ocio:2022-2.1.1 -f ci-ocio/Dockerfile .
ARG OLIVE_ORG=olivevideoeditor
ARG ASWF_PKG_ORG=aswftesting
ARG CI_COMMON_VERSION=2
ARG VFXPLATFORM_VERSION=2022
# OCIO repo branch or tag name
ARG OCIO_VERSION=v2.1.1
# Latest configs ~3 GB because of ACES 1.0.x.
# Upstream only copies nuke-default, therefore we also use the older configs.
ARG OCIO_CONFIGS_VERSION=1.0_r2
FROM ${OLIVE_ORG}/ci-common:${CI_COMMON_VERSION} as ci-ocio
ARG OLIVE_ORG
ARG CI_COMMON_VERSION
ARG VFXPLATFORM_VERSION
ARG OCIO_VERSION
ARG OCIO_CONFIGS_VERSION
LABEL maintainer="olivevideoeditor@gmail.com"
LABEL com.vfxplatform.version=$VFXPLATFORM_VERSION
LABEL org.opencontainers.image.name="$OLIVE_ORG/ci-otio"
LABEL org.opencontainers.image.description="CentOS OpenColorIO Build Image"
LABEL org.opencontainers.image.url="http://olivevideoeditor.org"
LABEL org.opencontainers.image.source="https://github.com/olive-editor/olive"
LABEL org.opencontainers.image.vendor="Olive Team"
LABEL org.opencontainers.image.version="1.0"
LABEL org.opencontainers.image.licenses="GPL-3.0-or-later"
ENV OLIVE_ORG=${OLIVE_ORG} \
CI_COMMON_VERSION=${CI_COMMON_VERSION} \
VFXPLATFORM_VERSION=${VFXPLATFORM_VERSION} \
OCIO_VERSION=${OCIO_VERSION} \
OCIO_CONFIGS_VERSION=${OCIO_CONFIGS_VERSION} \
OLIVE_INSTALL_PREFIX=/usr/local
COPY scripts/build_ocio.sh \
/tmp/
RUN /tmp/before_build.sh && \
/tmp/build_ocio.sh && \
/tmp/copy_new_files.sh
FROM scratch as ci-package-ocio
COPY --from=ci-ocio /package/. /
-67
View File
@@ -1,67 +0,0 @@
# Copyright (C) 2022 Olive Team
# SPDX-License-Identifier: GPL-3.0-or-later
# Build image (default):
# docker build -t olivevideoeditor/ci-package-oiio:2.3.13.0 -f ci-oiio/Dockerfile .
ARG ASWF_PKG_ORG=aswftesting
ARG OLIVE_ORG=olivevideoeditor
ARG CI_COMMON_VERSION=2
ARG VFXPLATFORM_VERSION=2022
ARG OIIO_VERSION=v2.3.13.0
ARG YASM_VERSION=1.3.0
ARG JPEG_TURBO_VERSION=2.1.3
FROM ${ASWF_PKG_ORG}/ci-package-boost:${VFXPLATFORM_VERSION} as ci-package-boost
FROM ${ASWF_PKG_ORG}/ci-package-openexr:${VFXPLATFORM_VERSION} as ci-package-openexr
FROM ${ASWF_PKG_ORG}/ci-package-imath:${VFXPLATFORM_VERSION} as ci-package-imath
FROM ${OLIVE_ORG}/ci-common:${CI_COMMON_VERSION} as ci-oiio
ARG OLIVE_ORG
ARG VFXPLATFORM_VERSION
ARG OIIO_VERSION
ARG YASM_VERSION
ARG JPEG_TURBO_VERSION
LABEL maintainer="olivevideoeditor@gmail.com"
LABEL com.vfxplatform.version=$VFXPLATFORM_VERSION
LABEL org.opencontainers.image.name="$OLIVE_ORG/ci-oiio"
LABEL org.opencontainers.image.description="CentOS OpenImageIO Build Image"
LABEL org.opencontainers.image.url="http://olivevideoeditor.org"
LABEL org.opencontainers.image.source="https://github.com/olive-editor/olive"
LABEL org.opencontainers.image.vendor="Olive Team"
LABEL org.opencontainers.image.version="1.0"
LABEL org.opencontainers.image.licenses="GPL-3.0-or-later"
ENV OLIVE_ORG=${OLIVE_ORG} \
VFXPLATFORM_VERSION=${VFXPLATFORM_VERSION} \
OIIO_VERSION=${OIIO_VERSION} \
YASM_VERSION=${YASM_VERSION} \
JPEG_TURBO_VERSION=${JPEG_TURBO_VERSION} \
OLIVE_INSTALL_PREFIX=/usr/local
COPY scripts/build_oiio.sh \
/tmp/
COPY --from=ci-package-boost /. /usr/local/
COPY --from=ci-package-openexr /. /usr/local/
COPY --from=ci-package-imath /. /usr/local/
RUN curl -fLsS -o yasm.tar.gz "http://www.tortall.net/projects/yasm/releases/yasm-${YASM_VERSION}.tar.gz" && \
tar xf yasm.tar.gz && \
rm -f yasm.tar.gz && \
cd yasm* && \
./configure --prefix="${OLIVE_INSTALL_PREFIX}" && \
make -j$(nproc) && \
make install && \
cd .. && \
rm -rf yasm*
RUN /tmp/before_build.sh && \
/tmp/build_oiio.sh && \
/tmp/copy_new_files.sh
FROM scratch as ci-package-oiio
COPY --from=ci-oiio /package/. /
-77
View File
@@ -1,77 +0,0 @@
# Copyright (C) 2022 Olive Team
# SPDX-License-Identifier: GPL-3.0-or-later
# Build image (default):
# docker build -t olivevideoeditor/ci-olive:2022.2 -f ci-olive/Dockerfile .
#
# .n is the build image revision number. It should be incremented each time a
# new image is published (also update the GitHub Actions workflow!).
# This allows to revert to a previous image should something go wrong.
ARG OLIVE_ORG=olivevideoeditor
ARG ASWF_PKG_ORG=aswftesting
ARG CI_COMMON_VERSION=2
ARG VFXPLATFORM_VERSION=2022
ARG OCIO_VERSION=2.1.1
ARG FFMPEG_VERSION=5.0
ARG OTIO_VERSION=0.14.1
ARG OIIO_VERSION=2.3.13.0
FROM ${ASWF_PKG_ORG}/ci-package-qt:${VFXPLATFORM_VERSION} as ci-package-qt
FROM ${ASWF_PKG_ORG}/ci-package-python:${VFXPLATFORM_VERSION} as ci-package-python
FROM ${ASWF_PKG_ORG}/ci-package-boost:${VFXPLATFORM_VERSION} as ci-package-boost
FROM ${ASWF_PKG_ORG}/ci-package-imath:${VFXPLATFORM_VERSION} as ci-package-imath
FROM ${ASWF_PKG_ORG}/ci-package-openexr:${VFXPLATFORM_VERSION} as ci-package-openexr
# A custom OIIO package without OpenVDB/Blosc/TBB would be smaller,
# but it currently does not pick up libwebp for some reason.
#FROM ${OLIVE_ORG}/ci-package-oiio:${OIIO_VERSION} as ci-package-oiio
FROM ${ASWF_PKG_ORG}/ci-package-oiio:${VFXPLATFORM_VERSION} as ci-package-oiio
FROM ${ASWF_PKG_ORG}/ci-package-openvdb:${VFXPLATFORM_VERSION} as ci-package-openvdb
FROM ${ASWF_PKG_ORG}/ci-package-blosc:${VFXPLATFORM_VERSION} as ci-package-blosc
FROM ${ASWF_PKG_ORG}/ci-package-tbb:${VFXPLATFORM_VERSION} as ci-package-tbb
#FROM ${ASWF_PKG_ORG}/ci-package-ocio:${VFXPLATFORM_VERSION}-${OCIO_VERSION} as ci-package-ocio
# Our package is compiled as RelWithDebInfo
FROM ${OLIVE_ORG}/ci-package-ocio:${VFXPLATFORM_VERSION}-${OCIO_VERSION} as ci-package-ocio
FROM ${OLIVE_ORG}/ci-package-ffmpeg:${FFMPEG_VERSION} as ci-package-ffmpeg
FROM ${OLIVE_ORG}/ci-package-crashpad:latest as ci-package-crashpad
FROM ${OLIVE_ORG}/ci-package-otio:${OTIO_VERSION} as ci-package-otio
FROM ${OLIVE_ORG}/ci-common:${CI_COMMON_VERSION} as ci-olive
ARG OLIVE_ORG
ARG VFXPLATFORM_VERSION
ARG PYTHON_VERSION=3.9
LABEL maintainer="olivevideoeditor@gmail.com"
LABEL com.vfxplatform.version=$VFXPLATFORM_VERSION
LABEL org.opencontainers.image.name="olivevideoeditor/ci-olive"
LABEL org.opencontainers.image.description="CentOS CI Olive Build Image"
LABEL org.opencontainers.image.url="http://olivevideoeditor.org"
LABEL org.opencontainers.image.source="https://github.com/olive-editor/olive"
LABEL org.opencontainers.image.vendor="Olive Team"
LABEL org.opencontainers.image.version="1.0"
LABEL org.opencontainers.image.licenses="GPL-3.0-or-later"
ENV PYTHONPATH=/usr/local/lib/python${PYTHON_VERSION}/site-packages:${PYTHONPATH} \
CRASHPAD_LOCATION=/usr/local/crashpad \
VFXPLATFORM_VERSION=${VFXPLATFORM_VERSION}
COPY --from=ci-package-qt /. /usr/local/
COPY --from=ci-package-python /. /usr/local/
COPY --from=ci-package-boost /. /usr/local/
COPY --from=ci-package-imath /. /usr/local/
COPY --from=ci-package-openexr /. /usr/local/
COPY --from=ci-package-oiio /. /usr/local/
# The ASWF OIIO package requires OpenVDB, Blosc, and TBB
COPY --from=ci-package-openvdb /. /usr/local/
COPY --from=ci-package-blosc /. /usr/local/
COPY --from=ci-package-tbb /. /usr/local/
COPY --from=ci-package-ocio /. /usr/local/
COPY --from=ci-package-ffmpeg /. /usr/local/
COPY --from=ci-package-crashpad /. /usr/local/
COPY --from=ci-package-otio /. /usr/local/
COPY scripts/build_olive.sh /tmp/
RUN curl --location "https://github.com/probonopd/linuxdeployqt/releases/download/7/linuxdeployqt-7-x86_64.AppImage" \
-o "/usr/local/linuxdeployqt-x86_64.AppImage" && \
chmod a+x "/usr/local/linuxdeployqt-x86_64.AppImage"
-58
View File
@@ -1,58 +0,0 @@
# Copyright (C) 2022 Olive Team
# SPDX-License-Identifier: GPL-3.0-or-later
# Build image (default):
# docker build -t olivevideoeditor/ci-package-otio:0.14.1 -f ci-otio/Dockerfile .
ARG OLIVE_ORG=olivevideoeditor
ARG ASWF_PKG_ORG=aswftesting
ARG CI_COMMON_VERSION=2
ARG VFXPLATFORM_VERSION=2022
ARG OTIO_VERSION=v0.14.1
ARG CXX_STANDARD=17
# We are currently not interested in the Python implementation and bindings
#FROM ${ASWF_PKG_ORG}/ci-package-python:${VFXPLATFORM_VERSION} as ci-package-python
#FROM ${ASWF_PKG_ORG}/ci-package-qt:${VFXPLATFORM_VERSION} as ci-package-qt
#FROM ${ASWF_PKG_ORG}/ci-package-pyside:${VFXPLATFORM_VERSION} as ci-package-pyside
FROM ${OLIVE_ORG}/ci-common:${CI_COMMON_VERSION} as ci-otio
ARG OLIVE_ORG
ARG VFXPLATFORM_VERSION
ARG OTIO_VERSION
ARG CXX_STANDARD
ARG PYTHON_VERSION=3.9
LABEL maintainer="olivevideoeditor@gmail.com"
LABEL com.vfxplatform.version=$VFXPLATFORM_VERSION
LABEL org.opencontainers.image.name="$OLIVE_ORG/ci-otio"
LABEL org.opencontainers.image.description="CentOS OpenTimelineIO Build Image"
LABEL org.opencontainers.image.url="http://olivevideoeditor.org"
LABEL org.opencontainers.image.source="https://github.com/olive-editor/olive"
LABEL org.opencontainers.image.vendor="Olive Team"
LABEL org.opencontainers.image.version="1.0"
LABEL org.opencontainers.image.licenses="GPL-3.0-or-later"
ENV OLIVE_ORG=${OLIVE_ORG} \
CI_COMMON_VERSION=${CI_COMMON_VERSION} \
VFXPLATFORM_VERSION=${VFXPLATFORM_VERSION} \
OTIO_VERSION=${OTIO_VERSION} \
CXX_STANDARD=${CXX_STANDARD} \
OLIVE_INSTALL_PREFIX=/usr/local
# PYTHONPATH=/usr/local/lib/python${PYTHON_VERSION}/site-packages:/usr/local/lib/python \
COPY scripts/build_otio.sh \
/tmp/
#COPY --from=ci-package-python /. /usr/local/
#COPY --from=ci-package-qt /. /usr/local/
#COPY --from=ci-package-pyside /. /usr/local/
RUN /tmp/before_build.sh && \
/tmp/build_otio.sh && \
/tmp/copy_new_files.sh
FROM scratch as ci-package-otio
COPY --from=ci-otio /package/. /
-16
View File
@@ -1,16 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) Contributors to the aswf-docker Project. All rights reserved.
# Modifications Copyright (C) 2025 mikesolar
# SPDX-License-Identifier: Apache-2.0
set -ex
if [ ! -f "$DOWNLOADS_DIR/cmake-${CMAKE_VERSION}-Linux-x86_64.sh" ]; then
curl --location "https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-Linux-x86_64.sh" -o "$DOWNLOADS_DIR/cmake-${CMAKE_VERSION}-Linux-x86_64.sh"
fi
sh "$DOWNLOADS_DIR/cmake-${CMAKE_VERSION}-Linux-x86_64.sh" --skip-license --prefix=/usr/local --exclude-subdir
-89
View File
@@ -1,89 +0,0 @@
#!/usr/bin/env bash
# Copyright (C) 2022 Olive Team
# Modifications Copyright (C) 2025 mikesolar
# SPDX-License-Identifier: GPL-3.0-or-later
set -ex
# Get Google's build tools
git clone --depth 1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
# HACK: Compile our own gn. The one included in depot_tools requires GLIBC_2.18,
# but CentOS 7 only ships with GLIBC_2.17.
git clone https://gn.googlesource.com/gn
# NOTE: Don't clone with --depth 1, this will make build/gen.py fail!
cd gn
python build/gen.py
ninja -C out
cd ..
# Put the path to our own gn build first
PATH="$(pwd)/gn/out:$(pwd)/depot_tools:$PATH"
export PATH
# Build Crashpad with Clang (default)
# Toolchain can be controlled with env vars CC, CXX and AR
mkdir crashpad
cd crashpad
git clone --depth 1 https://github.com/olive-editor/crashpad.git
gclient config https://github.com/olive-editor/crashpad.git
gclient sync
cd crashpad
# TODO: Do we want to set any special args here? For example:
# gn gen --args="target_cpu=\"x64\" is_debug=true" out/Default
gn gen out/Default
ninja -C out/Default
# Include list
echo 'out/Default/crashpad_handler' > /tmp/crashpad_include_list.txt
find . \( -type f -o -type l \) \
-name "*.h" -o \
-name "*.o" -o \
-name "*.a" | cut -c3- >> /tmp/crashpad_include_list.txt
# Exclude list
echo '**/.git/**
compat/android/**
compat/ios/**
compat/mac/**
compat/non_elf/**
compat/win/**
handler/mac/**
handler/win/**
infra/**
minidump/test/**
out/Default/**_test*
snapshot/fuchsia/**
snapshot/ios/**
snapshot/mac/**
snapshot/win/**
test/**
third_party/fuchsia/**
third_party/gyp/gyp/test/**
third_party/mini_chromium/mini_chromium/base/fuchsia/**
third_party/mini_chromium/mini_chromium/testing/**
tools/mac/**
util/fuchsia/**
util/ios/**
util/mac/**
util/win/**' > /tmp/crashpad_exclude_list.txt
rsync -av \
--files-from=/tmp/crashpad_include_list.txt \
--exclude-from=/tmp/crashpad_exclude_list.txt \
--prune-empty-dirs \
. "${OLIVE_INSTALL_PREFIX}/crashpad"
cd ../..
# Build Breakpad for minidump_stackwalk
mkdir breakpad
cd breakpad
fetch breakpad
cd src
./configure --prefix="${OLIVE_INSTALL_PREFIX}"
make -j$(nproc)
make install
-297
View File
@@ -1,297 +0,0 @@
#!/usr/bin/env bash
# Copyright (C) 2022 Olive Team
# Modifications Copyright (C) 2025 mikesolar
# SPDX-License-Identifier: GPL-3.0-or-later
# Largely based on https://trac.ffmpeg.org/wiki/CompilationGuide/Centos
#
# Uses { command } & pattern for parallelism https://gist.github.com/thenadz/6c0584d42fb007582fbc
#
# TODO: Use advanced options such as LTO? e.g. https://code.videolan.org/videolan/x264/-/blob/master/configure
# TODO: Enable debug symbols? (Or is it opt-out?)
# TODO: Add more ffmpeg libraries? See https://raw.githubusercontent.com/jrottenberg/ffmpeg/master/docker-images/4.2/centos7/Dockerfile
set -ex
# Set up recent NASM
{
curl -fLsS -o nasm.tar.xz "https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VERSION}/nasm-${NASM_VERSION}.tar.xz"
tar xf nasm.tar.xz
rm -f nasm.tar.xz
cd nasm*
./autogen.sh
./configure \
--prefix="/usr"
make -j$(nproc)
make install
cd ..
rm -rf nasm*
} &
# Set up recent YASM
{
curl -fLsS -o yasm.tar.gz "http://www.tortall.net/projects/yasm/releases/yasm-${YASM_VERSION}.tar.gz"
tar xf yasm.tar.gz
rm -f yasm.tar.gz
cd yasm*
./configure \
--prefix="/usr"
make -j$(nproc)
make install
cd ..
rm -rf yasm*
} &
# join jobs, some libs depend on NASM/YASM
wait
# Set up libsvtav1
{
git clone --depth 1 --branch "${SVTAV1_VERSION}" "https://gitlab.com/AOMediaCodec/SVT-AV1.git"
cd SVT-AV1/Build
cmake .. \
-G "Unix Makefiles" \
-DCMAKE_INSTALL_PREFIX="${OLIVE_INSTALL_PREFIX}" \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_APPS=OFF
cmake --build .
cmake --install .
cd ../..
rm -rf SVT-AV1
} &
# Set up libx264
{
# TODO: Checkout stable branch instead of master?
git clone --depth 1 "https://code.videolan.org/videolan/x264.git"
cd x264
./configure \
--prefix="${OLIVE_INSTALL_PREFIX}" \
--enable-shared \
--enable-pic \
--disable-cli
make
make install
cd ..
rm -rf x264
} &
# Set up libx265
{
# BitBucket dropped support for Mercurial repos
#hg clone https://bitbucket.org/multicoreware/x265
# Need to fetch tags (off by default for shallow clones) or checkout a tag to avoid pkg-config error
git clone --depth 1 --branch "${X265_VERSION}" "https://bitbucket.org/multicoreware/x265_git.git" x265
cd x265/build/linux
cmake \
-G "Unix Makefiles" \
-DCMAKE_INSTALL_PREFIX="${OLIVE_INSTALL_PREFIX}" \
../../source
make
make install
cd ../../..
rm -rf x265
} &
# Set up libogg
{
curl -fLsS -o libogg.tar.gz "http://downloads.xiph.org/releases/ogg/libogg-${OGG_VERSION}.tar.gz"
tar xf libogg.tar.gz
rm -f libogg.tar.gz
cd libogg*
./configure \
--prefix="${OLIVE_INSTALL_PREFIX}" \
--enable-shared
make
make install
cd ..
rm -rf libogg*
} &
# Set up libopus
{
curl -fLsS -o opus.tar.gz "https://archive.mozilla.org/pub/opus/opus-${OPUS_VERSION}.tar.gz"
tar xf opus.tar.gz
rm -f opus.tar.gz
cd opus*
./configure \
--prefix="${OLIVE_INSTALL_PREFIX}" \
--enable-shared
make
make install
cd ..
rm -rf opus*
} &
# join jobs, libvorbis and libtheora depend on libogg
wait
# Set up libvorbis
{
curl -fLsS -o libvorbis.tar.gz "http://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VERSION}.tar.gz"
tar xf libvorbis.tar.gz
rm -f libvorbis.tar.gz
cd libvorbis*
./configure \
--prefix="${OLIVE_INSTALL_PREFIX}" \
--with-ogg="${OLIVE_INSTALL_PREFIX}" \
--enable-shared
make
make install
cd ..
rm -rf libvorbis*
} &
# Set up libtheora
{
curl -fLsS -o libtheora.tar.gz "http://downloads.xiph.org/releases/theora/libtheora-${THEORA_VERSION}.tar.gz"
tar xf libtheora.tar.gz
rm -f libtheora.tar.gz
cd libtheora*
./configure \
--prefix="${OLIVE_INSTALL_PREFIX}" \
--with-ogg="${OLIVE_INSTALL_PREFIX}" \
--enable-shared
make
make install
cd ..
rm -rf libtheora*
} &
# Set up libvpx
{
git clone --depth 1 --branch "v${VPX_VERSION}" "https://chromium.googlesource.com/webm/libvpx.git"
cd libvpx
./configure \
--prefix="${OLIVE_INSTALL_PREFIX}" \
--enable-shared \
--enable-pic \
--enable-vp8 \
--enable-vp9 \
--enable-vp9-highbitdepth \
--as=yasm \
--disable-examples \
--disable-unit-tests \
--disable-docs \
--disable-install-bins
make
make install
cd ..
rm -rf libvpx
} &
### Set up libwebp
{
curl -fLsS -o libwebp.tar.gz "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${WEBP_VERSION}.tar.gz"
tar xf libwebp.tar.gz
rm -f libwebp.tar.gz
cd libwebp*
./configure \
--prefix="${OLIVE_INSTALL_PREFIX}" \
--enable-shared
make
make install
cd ..
rm -rf libwebp*
} &
# Set up libmp3lame
{
curl -fLsS -o lame.tar.gz "https://downloads.sourceforge.net/project/lame/lame/${LAME_VERSION}/lame-${LAME_VERSION}.tar.gz"
tar xf lame.tar.gz
rm -f lame.tar.gz
cd lame*
./configure \
--prefix="${OLIVE_INSTALL_PREFIX}" \
--enable-shared \
--enable-nasm \
--disable-frontend
make
make install
cd ..
rm -rf lame*
} &
### Set up xvid
{
curl -fLsS -o xvidcore.tar.gz "https://downloads.xvid.com/downloads/xvidcore-${XVID_VERSION}.tar.gz"
tar xf xvidcore.tar.gz
rm -f xvidcore.tar.gz
cd xvidcore/build/generic
./configure \
--prefix="${OLIVE_INSTALL_PREFIX}" \
--bindir="${OLIVE_INSTALL_PREFIX}/bin"
make
make install
cd ../../..
rm -rf xvidcore
} &
# Set up openjpeg
{
curl -fLsS -o openjpeg.tar.gz "https://github.com/uclouvain/openjpeg/archive/v${OPENJPEG_VERSION}.tar.gz"
tar xf openjpeg.tar.gz
rm -f openjpeg.tar.gz
cd openjpeg*
cmake \
-DBUILD_THIRDPARTY:BOOL=ON \
-DCMAKE_INSTALL_PREFIX="${OLIVE_INSTALL_PREFIX}" \
.
make
make install
cd ..
rm -rf openjpeg*
} &
# Set up libpng
{
git clone --depth 1 "https://git.code.sf.net/p/libpng/code" libpng --branch "v${LIBPNG_VERSION}"
cd libpng
./autogen.sh
./configure \
--prefix="${OLIVE_INSTALL_PREFIX}"
make check
make install
cd ..
rm -rf libpng
} &
# join all jobs
wait
curl -fLsS -o ffmpeg.tar.xz "https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.xz"
tar xf ffmpeg.tar.xz
cd ffmpeg*
# TODO: --enable-debug?
PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig:$PKG_CONFIG_PATH" ./configure \
--disable-doc \
--disable-ffplay \
--enable-gpl \
--enable-version3 \
--enable-shared \
--enable-libsvtav1 \
--enable-libfreetype \
--enable-libx264 \
--enable-libx265 \
--enable-libopus \
--enable-libvorbis \
--enable-libtheora \
--enable-libvpx \
--enable-libwebp \
--enable-libmp3lame \
--enable-libxvid \
--enable-libopenjpeg \
--prefix="${OLIVE_INSTALL_PREFIX}" \
--extra-libs=-lpthread \
--extra-libs=-lm \
--extra-cflags="-I${OLIVE_INSTALL_PREFIX}/include" \
--extra-ldflags="-L${OLIVE_INSTALL_PREFIX}/lib"
make -j$(nproc)
make install
cd ..
rm -rf ffmpeg*
-48
View File
@@ -1,48 +0,0 @@
#!/usr/bin/env bash
# Copyright (C) 2022 Olive Team
# Modifications Copyright (C) 2025 mikesolar
# SPDX-License-Identifier: GPL-3.0-or-later
set -ex
mkdir ocio
cd ocio
git clone --depth 1 --branch "${OCIO_VERSION}" https://github.com/AcademySoftwareFoundation/OpenColorIO.git
cd OpenColorIO
mkdir build
cd build
cmake \
-DCMAKE_INSTALL_PREFIX="${OLIVE_INSTALL_PREFIX}" \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DOCIO_BUILD_APPS=OFF \
-DOCIO_BUILD_NUKE=OFF \
-DOCIO_BUILD_DOCS=OFF \
-DOCIO_BUILD_TESTS=OFF \
-DOCIO_BUILD_GPU_TESTS=OFF \
-DOCIO_USE_HEADLESS=OFF \
-DOCIO_BUILD_PYTHON=OFF \
-DOCIO_BUILD_JAVA=OFF \
-DOCIO_WARNING_AS_ERROR=OFF \
-DOCIO_INSTALL_EXT_PACKAGES=ALL \
..
make -j$(nproc)
make install
cd ../..
curl --location "https://github.com/imageworks/OpenColorIO-Configs/archive/v${OCIO_CONFIGS_VERSION}.tar.gz" -o "ocio-configs.tar.gz"
tar -zxf ocio-configs.tar.gz
cd "OpenColorIO-Configs-${OCIO_CONFIGS_VERSION}"
mkdir "${OLIVE_INSTALL_PREFIX}/openColorIO"
cp nuke-default/config.ocio "${OLIVE_INSTALL_PREFIX}/openColorIO/"
cp -r nuke-default/luts "${OLIVE_INSTALL_PREFIX}/openColorIO/"
cd ../..
rm -rf ocio
-48
View File
@@ -1,48 +0,0 @@
#!/usr/bin/env bash
# Copyright (C) 2022 Olive Team
# Modifications Copyright (C) 2025 mikesolar
# SPDX-License-Identifier: GPL-3.0-or-later
set -ex
# TODO: Move to install_yumpackages.sh
yum install -y \
libtiff \
libtiff-devel \
libpng \
libpng-devel
git clone --depth 1 --branch "$JPEG_TURBO_VERSION" https://github.com/libjpeg-turbo/libjpeg-turbo
cd libjpeg-turbo
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX="${OLIVE_INSTALL_PREFIX}" \
..
make -j$(nproc)
make install
cd ../..
rm -rf libjpeg-turbo
# TODO: Make OIIO pick up WebP (missing: WEBPDEMUX_LIBRARY)
git clone --depth 1 --branch "$OIIO_VERSION" https://github.com/OpenImageIO/oiio.git
cd oiio
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX="${OLIVE_INSTALL_PREFIX}" \
-DOIIO_BUILD_TOOLS=OFF \
-DOIIO_BUILD_TESTS=OFF \
-DVERBOSE=ON \
-DUSE_PYTHON=0 \
-DBoost_NO_BOOST_CMAKE=ON \
..
make -j$(nproc)
make install
cd ../..
rm -rf oiio
-50
View File
@@ -1,50 +0,0 @@
#!/usr/bin/env bash
#
# Oak Video Editor - Non-Linear Video Editor
# Copyright (C) 2025 Olive CE Team
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
git clone --depth 1 https://github.com/olive-editor/olive.git
cd olive
mkdir build
cd build
cmake .. -G "Ninja"
cmake --build .
cmake --install app --prefix appdir/usr
# TODO: Can the following libs be excluded?
#libQt5DBus.so,\
#libQt5MultimediaGstTools.so,\
#libQt5MultimediaWidgets.so,\
/usr/local/linuxdeployqt-x86_64.AppImage \
appdir/usr/share/applications/org.olivevideoeditor.Olive.desktop \
-appimage \
-exclude-libs=\
libQt5Pdf.so,\
libQt5Qml.so,\
libQt5QmlModels.so,\
libQt5Quick.so,\
libQt5VirtualKeyboard.so \
-bundle-non-qt-libs \
-executable=appdir/usr/bin/crashpad_handler \
-executable=appdir/usr/bin/minidump_stackwalk \
-executable=appdir/usr/bin/olive-crashhandler \
--appimage-extract-and-run
./Olive*.AppImage --appimage-extract-and-run --version
-28
View File
@@ -1,28 +0,0 @@
#!/usr/bin/env bash
# Copyright (C) 2022 Olive Team
# Modifications Copyright (C) 2025 mikesolar
# SPDX-License-Identifier: GPL-3.0-or-later
set -ex
git clone --depth 1 --branch "$OTIO_VERSION" https://github.com/PixarAnimationStudios/OpenTimelineIO.git
cd OpenTimelineIO
#pip install --prefix="${OLIVE_INSTALL_PREFIX}" .
mkdir build
cd build
cmake .. -G "Ninja" \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_CXX_STANDARD="${CXX_STANDARD}" \
-DCMAKE_INSTALL_PREFIX="${OLIVE_INSTALL_PREFIX}" \
-DOTIO_PYTHON_INSTALL=OFF
cmake --build .
cmake --install .
cd ../..
rm -rf OpenTimelineIO
-15
View File
@@ -1,15 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) Contributors to the aswf-docker Project. All rights reserved.
# Modifications Copyright (C) 2025 mikesolar
# SPDX-License-Identifier: Apache-2.0
set -ex
rm -rf /package
cd "${OLIVE_INSTALL_PREFIX}"
find . -type f -o -type l | cut -c3- > /tmp/previous-prefix-files.txt
-16
View File
@@ -1,16 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) Contributors to the aswf-docker Project. All rights reserved.
# Modifications Copyright (C) 2025 mikesolar
# SPDX-License-Identifier: Apache-2.0
set -ex
mkdir -p /package
cd "${OLIVE_INSTALL_PREFIX}"
find . -type l -o -type f | cut -c3- > /tmp/new-prefix-files.txt
rsync -av --files-from=/tmp/new-prefix-files.txt --exclude-from=/tmp/previous-prefix-files.txt . /package/
@@ -1,98 +0,0 @@
#!/usr/bin/env bash
# Copyright (C) 2022 Olive Team
# Modifications Copyright (C) 2025 mikesolar
# Copyright (c) Contributors to the aswf-docker Project. All rights reserved.
# SPDX-License-Identifier: Apache-2.0 OR GPL-3.0-or-later
set -ex
# TODO: Check if this causes any problems. ASWF doesn't run a yum update.
yum update -y
# TODO: Add deps of deps which are explicitly listed in aswf-docker?
yum install --setopt=tsflags=nodocs -y \
bzip2-devel \
cups-libs \
freetype-devel \
giflib-devel \
gstreamer1 \
gstreamer1-devel \
gstreamer1-plugins-bad-free \
gstreamer1-plugins-bad-free-devel \
libcurl-devel \
libicu-devel \
libmng-devel \
LibRaw-devel \
libwebp-devel \
libXcomposite \
libXcomposite-devel \
libXcursor \
libXcursor-devel \
libxkbcommon \
libxkbcommon-devel \
libxkbcommon-x11-devel \
libXScrnSaver \
libXScrnSaver-devel \
mesa-libGL-devel \
numactl-devel \
openjpeg2-devel \
pciutils-devel \
pulseaudio-libs \
pulseaudio-libs-devel \
python3-tkinter \
xcb-util-image \
xcb-util-image-devel \
xcb-util-keysyms \
xcb-util-keysyms-devel \
xcb-util-renderutil \
xcb-util-renderutil-devel \
xcb-util-wm \
xcb-util-wm-devel \
zlib-devel
# This is needed for Xvfb to function properly.
dbus-uuidgen > /etc/machine-id
yum -y groupinstall "Development Tools"
# TODO: Below code installs the obsolete devtoolset-6.
# Unclear which devtoolset it will be for VFX platform CY2021:
# https://groups.google.com/forum/#!topic/vfx-platform-discuss/_-_CPw1fD3c
yum install -y --setopt=tsflags=nodocs centos-release-scl-rh yum-utils
if [[ $DTS_VERSION == 6 ]]; then
# Use the centos vault as the original devtoolset-6 is not part of CentOS-7 anymore
sed -i 's/7/7.6.1810/g; s|^#\s*\(baseurl=http://\)mirror|\1vault|g; /mirrorlist/d' /etc/yum.repos.d/CentOS-SCLo-*.repo
fi
yum install -y --setopt=tsflags=nodocs \
"devtoolset-$DTS_VERSION-toolchain"
yum install -y epel-release
# Additional package that are not found initially
yum install -y \
rh-git218 \
portaudio-devel
# lame-devel
# libcaca-devel \
# libdb4-devel \
# libdc1394-devel \
# openssl11-devel \
# p7zip \
# yasm-devel \
# zvbi-devel
# TODO: Does clearing the cache have any negative side effects?
yum clean all
# HACK: Qt5GuiConfigExtras.cmake expects libGL.so in /usr/local/lib64 but it gets installed to /usr/lib64
ln -s /usr/lib64/libGL.so /usr/local/lib64/
# Alternatively, we could edit /usr/local/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake
# - _qt5gui_find_extra_libs(OPENGL "/usr/local/lib64/libGL.so" "" "")
# + _qt5gui_find_extra_libs(OPENGL "/usr/lib64/libGL.so" "" "")
+3 -3
View File
@@ -146,13 +146,13 @@ The build process may take 10-30 minutes depending on your hardware.
After successful build, you can run Oak Video Editor:
```bash
./build/app/olive-editor
./build/app/oak-editor
```
Or open the app bundle (if generated):
```bash
open ./build/app/olive-editor.app
open ./build/app/Oak.app
```
---
@@ -234,7 +234,7 @@ export CPATH="/opt/homebrew/include:$CPATH"
To create a distributable `.app` bundle, you may need to use `macdeployqt`:
```bash
/opt/homebrew/opt/qt@6/bin/macdeployqt build/app/olive-editor.app
/opt/homebrew/opt/qt@6/bin/macdeployqt build/app/Oak.app
```
This will bundle the required Qt libraries into the app.
+3 -3
View File
@@ -146,13 +146,13 @@ cmake --build build --config Release
编译成功后,你可以运行 Oak 视频编辑器:
```bash
./build/app/olive-editor
./build/app/oak-editor
```
或者打开应用程序包(如果已生成):
```bash
open ./build/app/olive-editor.app
open ./build/app/Oak.app
```
---
@@ -234,7 +234,7 @@ export CPATH="/opt/homebrew/include:$CPATH"
要创建可分发的 `.app` 包,你可能需要使用 `macdeployqt`
```bash
/opt/homebrew/opt/qt@6/bin/macdeployqt build/app/olive-editor.app
/opt/homebrew/opt/qt@6/bin/macdeployqt build/app/Oak.app
```
这会将所需的 Qt 库打包到应用程序中。
+3 -3
View File
@@ -2,7 +2,7 @@
* Oak Video Editor - Render Worker Footage Integration Test
* Copyright (C) 2026 Oak Team
*
* End-to-end test that spawns olive-render-worker, feeds it a real decoded
* End-to-end test that spawns oak-render-worker, feeds it a real decoded
* frame from tests/demo.mp4 through the IPC shared-memory frame pool, and
* verifies that the worker returns a non-black output frame.
*/
@@ -100,9 +100,9 @@ QString WorkerBinaryPath()
dir.cdUp(); // tests -> build dir
dir.cd(QStringLiteral("app"));
#if defined(_WIN32)
return dir.filePath(QStringLiteral("olive-render-worker.exe"));
return dir.filePath(QStringLiteral("oak-render-worker.exe"));
#else
return dir.filePath(QStringLiteral("olive-render-worker"));
return dir.filePath(QStringLiteral("oak-render-worker"));
#endif
}