diff --git a/docker/README.md b/docker/README.md index e9ff45563..c5a824194 100644 --- a/docker/README.md +++ b/docker/README.md @@ -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 ``` diff --git a/docker/ci-common/Dockerfile b/docker/ci-common/Dockerfile index f6ef89435..f7da97214 100644 --- a/docker/ci-common/Dockerfile +++ b/docker/ci-common/Dockerfile @@ -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 diff --git a/docker/ci-crashpad/Dockerfile b/docker/ci-crashpad/Dockerfile index 76079b21c..0d2572a86 100644 --- a/docker/ci-crashpad/Dockerfile +++ b/docker/ci-crashpad/Dockerfile @@ -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): diff --git a/docker/ci-ffmpeg/Dockerfile b/docker/ci-ffmpeg/Dockerfile index 952be59b3..bbfc50c34 100644 --- a/docker/ci-ffmpeg/Dockerfile +++ b/docker/ci-ffmpeg/Dockerfile @@ -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 diff --git a/docker/ci-ocio/Dockerfile b/docker/ci-ocio/Dockerfile index 0727821bd..60e7fd83f 100644 --- a/docker/ci-ocio/Dockerfile +++ b/docker/ci-ocio/Dockerfile @@ -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. diff --git a/docker/ci-oiio/Dockerfile b/docker/ci-oiio/Dockerfile new file mode 100644 index 000000000..27421beeb --- /dev/null +++ b/docker/ci-oiio/Dockerfile @@ -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/. / diff --git a/docker/ci-olive/Dockerfile b/docker/ci-olive/Dockerfile index 3b0ff3166..b4fb4ac11 100644 --- a/docker/ci-olive/Dockerfile +++ b/docker/ci-olive/Dockerfile @@ -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/ diff --git a/docker/ci-otio/Dockerfile b/docker/ci-otio/Dockerfile index aeed69e94..1c2bdc94f 100644 --- a/docker/ci-otio/Dockerfile +++ b/docker/ci-otio/Dockerfile @@ -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 diff --git a/docker/scripts/build_crashpad.sh b/docker/scripts/build_crashpad.sh index 056fa3419..f973b7152 100644 --- a/docker/scripts/build_crashpad.sh +++ b/docker/scripts/build_crashpad.sh @@ -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 diff --git a/docker/scripts/build_ffmpeg.sh b/docker/scripts/build_ffmpeg.sh index 646129a6a..1d59504ad 100644 --- a/docker/scripts/build_ffmpeg.sh +++ b/docker/scripts/build_ffmpeg.sh @@ -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 diff --git a/docker/scripts/build_ocio.sh b/docker/scripts/build_ocio.sh index bff05dadb..9cc157dfe 100644 --- a/docker/scripts/build_ocio.sh +++ b/docker/scripts/build_ocio.sh @@ -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 diff --git a/docker/scripts/build_oiio.sh b/docker/scripts/build_oiio.sh new file mode 100644 index 000000000..97d8c8b51 --- /dev/null +++ b/docker/scripts/build_oiio.sh @@ -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 diff --git a/docker/scripts/build_otio.sh b/docker/scripts/build_otio.sh index 305af1ff9..b232e35ab 100644 --- a/docker/scripts/build_otio.sh +++ b/docker/scripts/build_otio.sh @@ -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 diff --git a/docker/scripts/common/install_yumpackages.sh b/docker/scripts/common/install_yumpackages.sh index f32fa0d3c..f32c55b22 100644 --- a/docker/scripts/common/install_yumpackages.sh +++ b/docker/scripts/common/install_yumpackages.sh @@ -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