Docker: Update deps (FFmpeg 5.0, OTIO 0.14.1, OpenEXR/Imath 3.1.3, etc.), add WIP OIIO package

This commit is contained in:
Simran Spiller
2022-03-18 23:42:26 +01:00
parent 2dacce58af
commit b55961d5bb
14 changed files with 174 additions and 57 deletions
+12 -12
View File
@@ -23,18 +23,18 @@ Pull images from [Docker Hub](https://hub.docker.com/u/olivevideoeditor):
```
docker pull olivevideoeditor/ci-common:2
docker pull olivevideoeditor/ci-package-otio
docker pull olivevideoeditor/ci-package-otio:0.14.1
docker pull olivevideoeditor/ci-package-crashpad
docker pull olivevideoeditor/ci-package-ffmpeg:4.2.4
docker pull olivevideoeditor/ci-package-ffmpeg:5.0
docker pull olivevideoeditor/ci-package-ocio:2022-2.1.1
docker pull olivevideoeditor/ci-olive:2021.4
docker pull olivevideoeditor/ci-olive:2022.1
```
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.4
docker run --rm -it -v ~/olive:/opt/olive/olive olivevideoeditor/ci-olive:2022.1
mkdir build
cd build
cmake .. -G Ninja
@@ -46,24 +46,24 @@ Rebuild all images locally:
```
cd docker
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-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:4.2.4 -f ci-ffmpeg/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:2021.4 -f ci-olive/Dockerfile .
docker build -t olivevideoeditor/ci-olive:2022.1 -f ci-olive/Dockerfile .
```
Note that `2021` in `ci-olive:2021.4` stands for the
[VFX Reference Platform](http://vfxplatform.com/) calendar year and `4` for the
Note that `2022` in `ci-olive:2022.1` stands for the
[VFX Reference Platform](http://vfxplatform.com/) calendar year and `1` 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
docker push olivevideoeditor/ci-package-otio:0.14.1
docker push olivevideoeditor/ci-package-crashpad
docker push olivevideoeditor/ci-package-ffmpeg:4.2.4
docker push olivevideoeditor/ci-package-ffmpeg:5.0
docker push olivevideoeditor/ci-package-ocio:2022-2.1.1
docker push olivevideoeditor/ci-olive:2021.4
docker push olivevideoeditor/ci-olive:2022.1
```
+2 -2
View File
@@ -1,4 +1,4 @@
# Copyright (C) 2021 Olive Team
# 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
@@ -9,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.19.3
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
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (C) 2021 Olive Team
# Copyright (C) 2022 Olive Team
# SPDX-License-Identifier: GPL-3.0-or-later
# Build image (default):
+12 -12
View File
@@ -1,26 +1,26 @@
# Copyright (C) 2021 Olive Team
# Copyright (C) 2022 Olive Team
# SPDX-License-Identifier: GPL-3.0-or-later
# Build image (default):
# docker build -t olivevideoeditor/ci-package-ffmpeg:4.2.4 -f ci-ffmpeg/Dockerfile .
# 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=4.2.4
ARG NASM_VERSION=2.15.03
ARG FFMPEG_VERSION=5.0
ARG NASM_VERSION=2.15.05
ARG YASM_VERSION=1.3.0
ARG AOM_VERSION=v2.0.1
ARG X265_VERSION=3.4
ARG OGG_VERSION=1.3.4
ARG AOM_VERSION=v3.3.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.9.0
ARG WEBP_VERSION=1.1.0
ARG VPX_VERSION=1.11.0
ARG WEBP_VERSION=1.2.2
ARG LAME_VERSION=3.100
ARG XVID_VERSION=1.3.5
ARG OPENJPEG_VERSION=2.3.1
ARG LIBPNG_VERSION=1.6.31
ARG XVID_VERSION=1.3.7
ARG OPENJPEG_VERSION=2.4.0
ARG LIBPNG_VERSION=1.6.37
# TODO: Make version of x264 selectable?
ARG NUM_JOBS=2
+2 -2
View File
@@ -1,4 +1,4 @@
# Copyright (C) 2021 Olive Team
# Copyright (C) 2022 Olive Team
# SPDX-License-Identifier: GPL-3.0-or-later
# Build image (default):
@@ -7,7 +7,7 @@
ARG OLIVE_ORG=olivevideoeditor
ARG ASWF_PKG_ORG=aswftesting
ARG CI_COMMON_VERSION=2
ARG VFXPLATFORM_VERSION=2021
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.
+67
View File
@@ -0,0 +1,67 @@
# 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/. /
+20 -6
View File
@@ -1,8 +1,8 @@
# Copyright (C) 2021 Olive Team
# Copyright (C) 2022 Olive Team
# SPDX-License-Identifier: GPL-3.0-or-later
# Build image (default):
# docker build -t olivevideoeditor/ci-olive:2021.4 -f ci-olive/Dockerfile .
# docker build -t olivevideoeditor/ci-olive:2022.1 -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!).
@@ -11,27 +11,36 @@
ARG OLIVE_ORG=olivevideoeditor
ARG ASWF_PKG_ORG=aswftesting
ARG CI_COMMON_VERSION=2
ARG VFXPLATFORM_VERSION=2021
ARG VFXPLATFORM_VERSION=2022
ARG OCIO_VERSION=2.1.1
ARG FFMPEG_VERSION=4.2.4
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:latest as ci-package-otio
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.7
ARG PYTHON_VERSION=3.9
LABEL maintainer="olivevideoeditor@gmail.com"
LABEL com.vfxplatform.version=$VFXPLATFORM_VERSION
@@ -50,8 +59,13 @@ ENV PYTHONPATH=/usr/local/lib/python${PYTHON_VERSION}/site-packages:${PYTHONPATH
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/
+8 -11
View File
@@ -1,13 +1,14 @@
# Copyright (C) 2021 Olive Team
# Copyright (C) 2022 Olive Team
# SPDX-License-Identifier: GPL-3.0-or-later
# Build image (default):
# docker build -t olivevideoeditor/ci-package-otio -f ci-otio/Dockerfile .
# 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=2021
ARG VFXPLATFORM_VERSION=2022
ARG OTIO_VERSION=v0.14.1
# We are currently not interested in the Python implementation and bindings
#FROM ${ASWF_PKG_ORG}/ci-package-python:${VFXPLATFORM_VERSION} as ci-package-python
@@ -18,7 +19,8 @@ FROM ${OLIVE_ORG}/ci-common:${CI_COMMON_VERSION} as ci-otio
ARG OLIVE_ORG
ARG VFXPLATFORM_VERSION
ARG PYTHON_VERSION=3.7
ARG OTIO_VERSION
ARG PYTHON_VERSION=3.9
LABEL maintainer="olivevideoeditor@gmail.com"
LABEL com.vfxplatform.version=$VFXPLATFORM_VERSION
@@ -33,22 +35,17 @@ 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} \
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 \
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 export DOWNLOADS_DIR=/tmp/downloads && \
mkdir /tmp/downloads && \
/tmp/install_cmake.sh && \
rm -rf /tmp/downloads
RUN /tmp/before_build.sh && \
/tmp/build_otio.sh && \
/tmp/copy_new_files.sh
+1 -1
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
# Copyright (C) 2021 Olive Team
# Copyright (C) 2022 Olive Team
# SPDX-License-Identifier: GPL-3.0-or-later
set -ex
+2 -2
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
# Copyright (C) 2021 Olive Team
# Copyright (C) 2022 Olive Team
# SPDX-License-Identifier: GPL-3.0-or-later
# Largely based on https://trac.ffmpeg.org/wiki/CompilationGuide/Centos
@@ -213,7 +213,7 @@ wait
### Set up xvid
{
curl -fLsS -o xvidcore.tar.gz "http://downloads.xvid.org/downloads/xvidcore-${XVID_VERSION}.tar.gz"
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
+1 -1
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
# Copyright (C) 2021 Olive Team
# Copyright (C) 2022 Olive Team
# SPDX-License-Identifier: GPL-3.0-or-later
set -ex
+43
View File
@@ -0,0 +1,43 @@
#!/usr/bin/env bash
# Copyright (C) 2022 Olive Team
# 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
+2 -6
View File
@@ -1,16 +1,12 @@
#!/usr/bin/env bash
# Copyright (C) 2021 Olive Team
# Copyright (C) 2022 Olive Team
# SPDX-License-Identifier: GPL-3.0-or-later
set -ex
git clone --depth 1 https://github.com/PixarAnimationStudios/OpenTimelineIO.git
git clone --depth 1 --branch "$OTIO_VERSION" https://github.com/PixarAnimationStudios/OpenTimelineIO.git
cd OpenTimelineIO
#if [ "$OTIO_VERSION" != "latest" ]; then
# git checkout "tags/v${OTIO_VERSION}" -b "v${OTIO_VERSION}"
#fi
#pip install --prefix="${OLIVE_INSTALL_PREFIX}" .
mkdir build
+1 -1
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
# Copyright (C) 2021 Olive Team
# 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