Docker: Update build image with final OCIOv2, Qt 5.15.2, OTIO, Crashpad (#1489)

* Add missing xcb-util-* packages. Qt's libqxcb.so seems to require them in the newer Qt version

* Adjust breakpad install prefix to match CMake change

* Add build script for Olive for quick testing

* .n in CI image actually stands for image revision

* skipping the CI is now supported natively by GitHub Actions
This commit is contained in:
Simran
2021-03-25 03:59:42 +01:00
committed by GitHub
parent 2d420decf0
commit cc317a8b1a
16 changed files with 115 additions and 78 deletions
+2 -14
View File
@@ -36,28 +36,20 @@ jobs:
compiler-name: GCC 9.3.1
cmake-gen: Ninja
os-name: Linux (CentOS 7)
vfx-cy: 2021
ci-common-version: 2
- build-type: RelWithDebInfo
cc-compiler: clang
cxx-compiler: clang++
compiler-name: Clang 10.0.0
cmake-gen: Ninja
os-name: Linux (CentOS 7)
vfx-cy: 2021
ci-common-version: 2
name: |
${{ matrix.os-name }}
<${{ matrix.compiler-name }},
${{ matrix.build-type }},
${{ matrix.cmake-gen }},
VFX CY${{ matrix.vfx-cy }},
CI Common Version ${{ matrix.ci-common-version }}>
${{ matrix.cmake-gen }}>
runs-on: ubuntu-latest
container:
image: olivevideoeditor/ci-olive:${{ matrix.vfx-cy }}.${{ matrix.ci-common-version }}
if: >-
!contains(github.event.head_commit.message, '[skip ci]')
image: olivevideoeditor/ci-olive:2021.3
steps:
- name: Checkout Source Code
@@ -138,8 +130,6 @@ jobs:
${{ matrix.build-type }},
${{ matrix.cmake-gen }}>
runs-on: ${{ matrix.os }}
if: >-
!contains(github.event.head_commit.message, '[skip ci]')
steps:
- name: Checkout Source Code
@@ -284,8 +274,6 @@ jobs:
${{ matrix.build-type }},
${{ matrix.cmake-gen }}>
runs-on: ${{ matrix.os }}
if: >-
!contains(github.event.head_commit.message, '[skip ci]')
steps:
- name: Checkout Source Code
-1
View File
@@ -51,7 +51,6 @@ find_library(OCIO_LIBRARY
libOpenColorIO.so.2.0 # libOpenColorIO.so.2.0 (Linux)
OpenColorIO.2.0 # libOpenColorIO.2.0.dylib (macOS)
OpenColorIO_2_0 # OpenColorIO_2_0.lib (Windows)
OpenColorIO # (fallback)
HINTS
"${OCIO_LOCATION}"
"$ENV{OCIO_LOCATION}"
+12 -5
View File
@@ -14,7 +14,7 @@ images maintained by the Olive team as well as from
Dependency hierarchy:
1. `ci-common`
2. `ci-otio`, `ci-crashpad`, `ci-ffmpeg`
2. `ci-otio`, `ci-crashpad`, `ci-ffmpeg`, `ci-ocio`
3. `ci-olive`
## Usage
@@ -26,14 +26,15 @@ docker pull olivevideoeditor/ci-common:2
docker pull olivevideoeditor/ci-package-otio
docker pull olivevideoeditor/ci-package-crashpad
docker pull olivevideoeditor/ci-package-ffmpeg:4.2.4
docker pull olivevideoeditor/ci-olive:2021.2
docker pull olivevideoeditor/ci-package-ocio:2021-2.0.0
docker pull olivevideoeditor/ci-olive:2021.3
```
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:2021.2
docker run --rm -it -v ~/olive:/opt/olive/olive olivevideoeditor/ci-olive:2021.3
mkdir build
cd build
cmake .. -G Ninja
@@ -48,9 +49,14 @@ docker build -t olivevideoeditor/ci-common:2 -f ci-common/Dockerfile .
docker build -t olivevideoeditor/ci-package-otio -f ci-otio/Dockerfile .
docker build -t olivevideoeditor/ci-package-crashpad -f ci-crashpad/Dockerfile .
docker build -t olivevideoeditor/ci-package-ffmpeg:4.2.4 -f ci-ffmpeg/Dockerfile .
docker build -t olivevideoeditor/ci-olive:2021.2 -f ci-olive/Dockerfile .
docker build -t olivevideoeditor/ci-package-ocio:2021-2.0.0 -f ci-ocio/Dockerfile .
docker build -t olivevideoeditor/ci-olive:2021.3 -f ci-olive/Dockerfile .
```
Note that `2021` in `ci-olive:2021.3` stands for the
[VFX Reference Platform](http://vfxplatform.com/) calendar year and `3` for the
build image revision (should be incremented each time a new image is published).
Publish images:
```
@@ -58,5 +64,6 @@ docker push olivevideoeditor/ci-common:2
docker push olivevideoeditor/ci-package-otio
docker push olivevideoeditor/ci-package-crashpad
docker push olivevideoeditor/ci-package-ffmpeg:4.2.4
docker push olivevideoeditor/ci-olive:2021.2
docker push olivevideoeditor/ci-package-ocio:2021-2.0.0
docker push olivevideoeditor/ci-olive:2021.3
```
+7 -7
View File
@@ -1,5 +1,6 @@
# Copyright (C) 2020 Olive Team
# SPDX-License-Identifier: GPL-3.0-or-later
# 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 .
@@ -8,7 +9,7 @@ ARG OLIVE_ORG=olivevideoeditor
ARG ASWF_PKG_ORG=aswftesting
ARG CI_COMMON_VERSION=2
ARG DTS_VERSION=9
ARG CMAKE_VERSION=3.17.3
ARG CMAKE_VERSION=3.19.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
@@ -31,21 +32,19 @@ LABEL org.opencontainers.image.licenses="GPL-3.0-or-later"
USER root
COPY scripts/${CI_COMMON_VERSION}/versions_common.sh \
scripts/common/install_yumpackages.sh \
COPY scripts/common/install_yumpackages.sh \
scripts/common/before_build.sh \
scripts/common/copy_new_files.sh \
/tmp/
RUN source /tmp/versions_common.sh && \
/tmp/install_yumpackages.sh
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} \
DTS_VERSION=${DTS_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
@@ -69,3 +68,4 @@ RUN export DOWNLOADS_DIR=/tmp/downloads && \
/tmp/install_cmake.sh && \
# /tmp/patchup.sh && \
rm -rf /tmp/downloads
# TODO: Remove scripts from /tmp ?
+5 -3
View File
@@ -9,6 +9,7 @@ ARG CI_COMMON_VERSION=2
ARG FFMPEG_VERSION=4.2.4
ARG NASM_VERSION=2.15.03
ARG YASM_VERSION=1.3.0
ARG AOM_VERSION=v2.0.1
ARG X265_VERSION=3.4
ARG OGG_VERSION=1.3.4
ARG OPUS_VERSION=1.3.1
@@ -20,7 +21,7 @@ ARG LAME_VERSION=3.100
ARG XVID_VERSION=1.3.5
ARG OPENJPEG_VERSION=2.3.1
ARG LIBPNG_VERSION=1.6.31
# TODO: Make version of x264, x265 and libvpx selectable?
# TODO: Make version of x264 selectable?
ARG NUM_JOBS=2
FROM ${OLIVE_ORG}/ci-common:${CI_COMMON_VERSION} as ci-ffmpeg
@@ -30,6 +31,7 @@ ARG CI_COMMON_VERSION
ARG FFMPEG_VERSION
ARG NASM_VERSION
ARG YASM_VERSION
ARG AOM_VERSION
ARG X265_VERSION
ARG OGG_VERSION
ARG OPUS_VERSION
@@ -41,8 +43,7 @@ ARG LAME_VERSION
ARG XVID_VERSION
ARG OPENJPEG_VERSION
ARG LIBPNG_VERSION
# TODO: Make version of x264, x265 and libvpx selectable?
ARG NUM_JOBS=2
ARG NUM_JOBS
LABEL maintainer="olivevideoeditor@gmail.com"
LABEL org.opencontainers.image.name="$OLIVE_ORG/ci-ffmpeg"
@@ -61,6 +62,7 @@ ENV OLIVE_ORG=${OLIVE_ORG} \
FFMPEG_VERSION=${FFMPEG_VERSION} \
NASM_VERSION=${NASM_VERSION} \
YASM_VERSION=${YASM_VERSION} \
AOM_VERSION=${AOM_VERSION} \
X265_VERSION=${X265_VERSION} \
OGG_VERSION=${OGG_VERSION} \
OPUS_VERSION=${OPUS_VERSION} \
+5 -1
View File
@@ -2,12 +2,14 @@
# SPDX-License-Identifier: GPL-3.0-or-later
# Build image (default):
# docker build -t olivevideoeditor/ci-package-ocio:2021-2.0 -f ci-ocio/Dockerfile .
# docker build -t olivevideoeditor/ci-package-ocio:2021-2.0.0 -f ci-ocio/Dockerfile .
ARG OLIVE_ORG=olivevideoeditor
ARG ASWF_PKG_ORG=aswftesting
ARG CI_COMMON_VERSION=2
ARG VFXPLATFORM_VERSION=2021
# OCIO repo branch or tag name
ARG OCIO_VERSION=v2.0.0
# 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
@@ -17,6 +19,7 @@ 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"
@@ -32,6 +35,7 @@ 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
+9 -2
View File
@@ -2,13 +2,17 @@
# SPDX-License-Identifier: GPL-3.0-or-later
# Build image (default):
# docker build -t olivevideoeditor/ci-olive:2021.2 -f ci-olive/Dockerfile .
# docker build -t olivevideoeditor/ci-olive:2021.3 -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=2021
ARG OCIO_VERSION=2.0
ARG OCIO_VERSION=2.0.0
ARG FFMPEG_VERSION=4.2.4
FROM ${ASWF_PKG_ORG}/ci-package-qt:${VFXPLATFORM_VERSION} as ci-package-qt
@@ -16,6 +20,8 @@ FROM ${ASWF_PKG_ORG}/ci-package-python:${VFXPLATFORM_VERSION} as ci-package-pyth
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-oiio:${VFXPLATFORM_VERSION} as ci-package-oiio
#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
@@ -50,6 +56,7 @@ 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/continuous/linuxdeployqt-continuous-x86_64.AppImage" \
-o "/usr/local/linuxdeployqt-x86_64.AppImage" && \
+8 -8
View File
@@ -9,9 +9,10 @@ ARG ASWF_PKG_ORG=aswftesting
ARG CI_COMMON_VERSION=2
ARG VFXPLATFORM_VERSION=2021
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
# 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
@@ -32,21 +33,20 @@ 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} \
PYTHONPATH=/usr/local/lib/python${PYTHON_VERSION}/site-packages:/usr/local/lib/python \
OLIVE_INSTALL_PREFIX=/usr/local
# PYTHONPATH=/usr/local/lib/python${PYTHON_VERSION}/site-packages:/usr/local/lib/python \
COPY scripts/base/install_cmake.sh \
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/
#COPY --from=ci-package-python /. /usr/local/
#COPY --from=ci-package-qt /. /usr/local/
#COPY --from=ci-package-pyside /. /usr/local/
RUN export DOWNLOADS_DIR=/tmp/downloads && \
mkdir /tmp/downloads && \
/tmp/install_cmake.sh && \
pip install flake8 tox urllib3 && \
rm -rf /tmp/downloads
RUN /tmp/before_build.sh && \
-9
View File
@@ -1,9 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) Contributors to the aswf-docker Project. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
set -ex
export DTS_VERSION=9
export CLANG_VERSION=10.0.0
export NINJA_VERSION=1.10.0
-13
View File
@@ -1,13 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) Contributors to the aswf-docker Project. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
set -ex
export BOOST_VERSION=1.70.0
export CMAKE_VERSION=3.17.3
export NUMPY_VERSION=1.16
export PYSIDE_VERSION=5.12.6
export PYTHON_VERSION_FULL=3.7.3
export PYTHON_VERSION=3.7
export QT_VERSION=5.12.8
+1 -1
View File
@@ -77,6 +77,6 @@ mkdir breakpad
cd breakpad
fetch breakpad
cd src
./configure --prefix="${OLIVE_INSTALL_PREFIX}/breakpad"
./configure --prefix="${OLIVE_INSTALL_PREFIX}"
make
make install -j$(nproc)
+18 -2
View File
@@ -2,7 +2,7 @@
# Copyright (C) 2020 Olive Team
# SPDX-License-Identifier: GPL-3.0-or-later
# Largely copied from https://trac.ffmpeg.org/wiki/CompilationGuide/Centos
# Largely based on https://trac.ffmpeg.org/wiki/CompilationGuide/Centos
#
# Uses { command } & pattern for parallelism https://gist.github.com/thenadz/6c0584d42fb007582fbc
#
@@ -44,6 +44,21 @@ set -ex
# join jobs, some libs depend on NASM/YASM
wait
# Set up libaom
{
git clone --depth 1 --branch "${AOM_VERSION}" "https://aomedia.googlesource.com/aom"
cd aom
mkdir _build
cd _build
cmake .. \
-DCMAKE_INSTALL_PREFIX="${OLIVE_INSTALL_PREFIX}" \
-DBUILD_SHARED_LIBS=1
cmake --build .
cmake --install .
cd ../..
rm -rf aom
} &
# Set up libx264
{
# TODO: Checkout stable branch instead of master?
@@ -248,12 +263,13 @@ tar xf ffmpeg.tar.xz
cd ffmpeg*
# TODO: --enable-debug?
PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH" ./configure \
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-libaom \
--enable-libfreetype \
--enable-libx264 \
--enable-libx265 \
+1 -1
View File
@@ -7,7 +7,7 @@ set -ex
mkdir ocio
cd ocio
git clone --depth 1 https://github.com/AcademySoftwareFoundation/OpenColorIO.git
git clone --depth 1 --branch "${OCIO_VERSION}" https://github.com/AcademySoftwareFoundation/OpenColorIO.git
cd OpenColorIO
mkdir build
+17
View File
@@ -0,0 +1,17 @@
#!/usr/bin/env bash
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
/usr/local/linuxdeployqt-x86_64.AppImage \
appdir/usr/share/applications/org.olivevideoeditor.Olive.desktop \
-appimage \
--appimage-extract-and-run
./Olive*.AppImage --appimage-extract-and-run --version
+6 -3
View File
@@ -11,13 +11,16 @@ cd OpenTimelineIO
# git checkout "tags/v${OTIO_VERSION}" -b "v${OTIO_VERSION}"
#fi
pip install --prefix="${OLIVE_INSTALL_PREFIX}" .
#pip install --prefix="${OLIVE_INSTALL_PREFIX}" .
mkdir build
cd build
cmake .. -G "Ninja"
cmake .. -G "Ninja" \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_PREFIX="${OLIVE_INSTALL_PREFIX}" \
-DOTIO_PYTHON_INSTALL=OFF
cmake --build .
cmake --install . --prefix "${OLIVE_INSTALL_PREFIX}"
cmake --install .
cd ../..
rm -rf OpenTimelineIO
+24 -8
View File
@@ -14,23 +14,38 @@ yum install --setopt=tsflags=nodocs -y \
cups-libs \
freetype-devel \
giflib-devel \
gstreamer1 gstreamer1-devel \
gstreamer1-plugins-bad-free gstreamer1-plugins-bad-free-devel \
gstreamer1 \
gstreamer1-devel \
gstreamer1-plugins-bad-free \
gstreamer1-plugins-bad-free-devel \
libicu-devel \
libmng-devel \
LibRaw-devel \
libwebp-devel \
libXcomposite libXcomposite-devel \
libXcursor libXcursor-devel \
libxkbcommon libxkbcommon-devel \
libXcomposite \
libXcomposite-devel \
libXcursor \
libXcursor-devel \
libxkbcommon \
libxkbcommon-devel \
libxkbcommon-x11-devel \
libXScrnSaver libXScrnSaver-devel \
libXScrnSaver \
libXScrnSaver-devel \
mesa-libGL-devel \
numactl-devel \
openjpeg2-devel \
pciutils-devel \
pulseaudio-libs pulseaudio-libs-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.
@@ -56,11 +71,12 @@ yum install -y epel-release
# Additional package that are not found initially
yum install -y \
rh-git218 \
rh-git218
# lame-devel
# libcaca-devel \
# libdb4-devel \
# libdc1394-devel \
# openssl11-devel \
# p7zip \
# yasm-devel \
# zvbi-devel