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:
+21
-18
@@ -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
@@ -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")
|
||||
|
||||
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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>
|
||||
)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
```
|
||||
@@ -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 ?
|
||||
@@ -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 /
|
||||
@@ -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/. /
|
||||
@@ -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/. /
|
||||
@@ -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/. /
|
||||
@@ -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"
|
||||
@@ -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/. /
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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*
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
@@ -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.
|
||||
|
||||
@@ -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 库打包到应用程序中。
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user