Adding support for commas in active views list (#26) #1186
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# SPDX-License-Identifier: BSD-3-Clause | |
# Copyright Contributors to the OpenColorIO Project. | |
# | |
# GitHub Actions workflow file | |
# https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions | |
name: CI | |
on: | |
push: | |
# Versioned branches and tags are ignored for OCIO <= 1.x.x | |
branches-ignore: | |
- RB-0.* | |
- RB-1.* | |
- gh-pages | |
tags-ignore: | |
- v0.* | |
- v1.* | |
pull_request: | |
branches-ignore: | |
- RB-0.* | |
- RB-1.* | |
- gh-pages | |
tags-ignore: | |
- v0.* | |
- v1.* | |
jobs: | |
# Linux jobs run in Docker containers, so the latest OS version is OK. macOS | |
# and Windows jobs need to be locked to specific virtual environment | |
# versions to mitigate issues from OS updates, and will require maintenance | |
# as OS versions are retired. | |
# | |
# GH Actions (Free plan) supports 20 concurrent jobs, with 5 concurrent macOS | |
# jobs. This workflow tries to utilize (but not exceed) that budget to | |
# promote timely CI. | |
# --------------------------------------------------------------------------- | |
# Linux | |
# --------------------------------------------------------------------------- | |
linux: | |
name: 'Linux VFX CY${{ matrix.vfx-cy }} | |
<${{ matrix.compiler-desc }} | |
config=${{ matrix.build-type }}, | |
shared=${{ matrix.build-shared }}, | |
simd=${{ matrix.use-simd }}, | |
cxx=${{ matrix.cxx-standard }}, | |
docs=${{ matrix.build-docs }}, | |
oiio=${{ matrix.use-oiio }}>' | |
# Avoid duplicated checks when a pull_request is opened from a local branch. | |
if: | | |
github.event_name == 'push' || | |
github.event.pull_request.head.repo.full_name != github.repository | |
# GH-hosted VM. The build runs in ASWF 'container' defined below. | |
runs-on: ubuntu-latest | |
container: | |
# DockerHub: https://hub.docker.com/u/aswf | |
# Source: https://github.com/AcademySoftwareFoundation/aswf-docker | |
image: aswf/ci-ocio:${{ matrix.vfx-cy }} | |
strategy: | |
fail-fast: true | |
matrix: | |
build: [7, 8, 9, 10, 11, 12] | |
include: | |
# ------------------------------------------------------------------- | |
# VFX CY2024 (Python 3.11) | |
# ------------------------------------------------------------------- | |
- build: 12 | |
build-type: Debug | |
build-shared: 'ON' | |
build-docs: 'OFF' | |
build-openfx: 'ON' | |
use-simd: 'ON' | |
use-oiio: 'ON' | |
cxx-standard: 17 | |
cxx-compiler: clang++ | |
cc-compiler: clang | |
compiler-desc: Clang | |
vfx-cy: 2024 | |
install-ext-packages: MISSING | |
- build: 11 | |
build-type: Release | |
build-shared: 'ON' | |
build-docs: 'ON' | |
build-openfx: 'ON' | |
use-simd: 'OFF' | |
use-oiio: 'OFF' | |
cxx-standard: 17 | |
cxx-compiler: g++ | |
cc-compiler: gcc | |
compiler-desc: GCC | |
vfx-cy: 2024 | |
install-ext-packages: ALL | |
- build: 10 | |
build-type: Release | |
build-shared: 'OFF' | |
build-docs: 'OFF' | |
build-openfx: 'OFF' | |
use-simd: 'ON' | |
use-oiio: 'OFF' | |
cxx-standard: 11 | |
cxx-compiler: g++ | |
cc-compiler: gcc | |
compiler-desc: GCC | |
vfx-cy: 2024 | |
install-ext-packages: ALL | |
# ------------------------------------------------------------------- | |
# VFX CY2023 (Python 3.10) | |
# ------------------------------------------------------------------- | |
- build: 9 | |
build-type: Debug | |
build-shared: 'ON' | |
build-docs: 'OFF' | |
build-openfx: 'ON' | |
use-simd: 'ON' | |
use-oiio: 'ON' | |
cxx-standard: 17 | |
cxx-compiler: clang++ | |
cc-compiler: clang | |
compiler-desc: Clang | |
vfx-cy: 2023 | |
install-ext-packages: MISSING | |
- build: 8 | |
build-type: Release | |
build-shared: 'ON' | |
build-docs: 'ON' | |
build-openfx: 'ON' | |
use-simd: 'OFF' | |
use-oiio: 'OFF' | |
cxx-standard: 17 | |
cxx-compiler: g++ | |
cc-compiler: gcc | |
compiler-desc: GCC | |
vfx-cy: 2023 | |
install-ext-packages: ALL | |
- build: 7 | |
build-type: Release | |
build-shared: 'OFF' | |
build-docs: 'OFF' | |
build-openfx: 'OFF' | |
use-simd: 'ON' | |
use-oiio: 'OFF' | |
cxx-standard: 11 | |
cxx-compiler: g++ | |
cc-compiler: gcc | |
compiler-desc: GCC | |
vfx-cy: 2023 | |
install-ext-packages: ALL | |
env: | |
CXX: ${{ matrix.cxx-compiler }} | |
CC: ${{ matrix.cc-compiler }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install docs env | |
run: share/ci/scripts/linux/yum/install_docs_env.sh | |
if: matrix.build-docs == 'ON' | |
- name: Install tests env | |
run: share/ci/scripts/linux/yum/install_tests_env.sh | |
- name: Create build directories | |
run: | | |
mkdir _install | |
mkdir _build | |
- name: Configure | |
run: | | |
cmake ../. \ | |
-DCMAKE_INSTALL_PREFIX=../_install \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \ | |
-DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \ | |
-DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \ | |
-DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \ | |
-DOCIO_BUILD_OPENFX=${{ matrix.build-openfx }} \ | |
-DOCIO_BUILD_GPU_TESTS=OFF \ | |
-DOCIO_USE_SIMD=${{ matrix.use-simd }} \ | |
-DOCIO_USE_OIIO_FOR_APPS=${{ matrix.use-oiio }} \ | |
-DOCIO_INSTALL_EXT_PACKAGES=${{ matrix.install-ext-packages }} \ | |
-DOCIO_WARNING_AS_ERROR=ON \ | |
-DPython_EXECUTABLE=$(which python) | |
working-directory: _build | |
- name: Build | |
run: | | |
cmake --build . \ | |
--target install \ | |
--config ${{ matrix.build-type }} \ | |
-- -j$(nproc) | |
echo "ocio_build_path=$(pwd)" >> $GITHUB_ENV | |
working-directory: _build | |
- name: Test | |
run: ctest -V -C ${{ matrix.build-type }} | |
working-directory: _build | |
- name: Test CMake Consumer with shared OCIO | |
if: matrix.build-shared == 'ON' | |
run: | | |
cmake . \ | |
-DCMAKE_PREFIX_PATH=../../../_install \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} | |
cmake --build . \ | |
--config ${{ matrix.build-type }} | |
./consumer | |
working-directory: _build/tests/cmake-consumer-dist | |
- name: Test CMake Consumer with static OCIO | |
if: matrix.build-shared == 'OFF' | |
# The yaml-cpp_VERSION is set below because Findyaml-cpp.cmake needs it but is unable to | |
# extract it from the headers, like the other modules. | |
# | |
# Prefer the static version of each dependencies by using <pkg>_STATIC_LIBRARY. | |
# Alternatively, this can be done by setting <pkg>_LIBRARY and <pkg>_INCLUDE_DIR to | |
# the static version of the package. | |
run: | | |
cmake . \ | |
-DCMAKE_PREFIX_PATH=../../../_install \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \ | |
-Dexpat_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-Dexpat_STATIC_LIBRARY=ON \ | |
-DImath_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-DImath_STATIC_LIBRARY=ON \ | |
-Dpystring_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-Dyaml-cpp_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-Dyaml-cpp_STATIC_LIBRARY=ON \ | |
-Dyaml-cpp_VERSION=0.7.0 \ | |
-DZLIB_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-DZLIB_STATIC_LIBRARY=ON \ | |
-Dminizip-ng_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-Dminizip-ng_STATIC_LIBRARY=ON | |
cmake --build . \ | |
--config ${{ matrix.build-type }} | |
./consumer | |
working-directory: _build/tests/cmake-consumer-dist | |
# --------------------------------------------------------------------------- | |
# Linux (unsupported Node.js) | |
# --------------------------------------------------------------------------- | |
linux-old: | |
name: 'Linux VFX CY${{ matrix.vfx-cy }} | |
<${{ matrix.compiler-desc }} | |
config=${{ matrix.build-type }}, | |
shared=${{ matrix.build-shared }}, | |
simd=${{ matrix.use-simd }}, | |
cxx=${{ matrix.cxx-standard }}, | |
docs=${{ matrix.build-docs }}, | |
oiio=${{ matrix.use-oiio }}>' | |
# Avoid duplicated checks when a pull_request is opened from a local branch. | |
if: | | |
github.event_name == 'push' || | |
github.event.pull_request.head.repo.full_name != github.repository | |
# GH-hosted VM. The build runs in ASWF 'container' defined below. | |
runs-on: ubuntu-latest | |
container: | |
# DockerHub: https://hub.docker.com/u/aswf | |
# Source: https://github.com/AcademySoftwareFoundation/aswf-docker | |
image: aswf/ci-ocio:${{ matrix.vfx-cy }} | |
volumes: | |
- /node20217:/node20217:rw,rshared | |
- /node20217:/__e/node20:ro,rshared | |
strategy: | |
fail-fast: true | |
matrix: | |
build: [1, 2, 3, 4, 5, 6] | |
include: | |
# ------------------------------------------------------------------- | |
# VFX CY2022 (Python 3.9) | |
# ------------------------------------------------------------------- | |
- build: 6 | |
build-type: Debug | |
build-shared: 'ON' | |
build-docs: 'OFF' | |
build-openfx: 'ON' | |
use-simd: 'ON' | |
use-oiio: 'ON' | |
cxx-standard: 17 | |
cxx-compiler: clang++ | |
cc-compiler: clang | |
compiler-desc: Clang | |
vfx-cy: 2022 | |
install-ext-packages: ALL | |
- build: 5 | |
build-type: Release | |
build-shared: 'ON' | |
build-docs: 'ON' | |
build-openfx: 'ON' | |
use-simd: 'OFF' | |
use-oiio: 'OFF' | |
cxx-standard: 17 | |
cxx-compiler: g++ | |
cc-compiler: gcc | |
compiler-desc: GCC | |
vfx-cy: 2022 | |
install-ext-packages: MISSING | |
- build: 4 | |
build-type: Release | |
build-shared: 'OFF' | |
build-docs: 'OFF' | |
build-openfx: 'OFF' | |
use-simd: 'ON' | |
use-oiio: 'OFF' | |
cxx-standard: 11 | |
cxx-compiler: g++ | |
cc-compiler: gcc | |
compiler-desc: GCC | |
vfx-cy: 2022 | |
install-ext-packages: ALL | |
# ------------------------------------------------------------------- | |
# VFX CY2021 (Python 3.7) | |
# ------------------------------------------------------------------- | |
- build: 3 | |
build-type: Release | |
build-shared: 'ON' | |
build-docs: 'OFF' | |
build-openfx: 'OFF' | |
use-simd: 'ON' | |
use-oiio: 'ON' | |
cxx-standard: 17 | |
cxx-compiler: clang++ | |
cc-compiler: clang | |
compiler-desc: Clang | |
vfx-cy: 2021 | |
install-ext-packages: MISSING | |
- build: 2 | |
build-type: Release | |
build-shared: 'OFF' | |
build-docs: 'OFF' | |
build-openfx: 'ON' | |
use-simd: 'OFF' | |
use-oiio: 'OFF' | |
cxx-standard: 14 | |
cxx-compiler: clang++ | |
cc-compiler: clang | |
compiler-desc: Clang | |
vfx-cy: 2021 | |
install-ext-packages: ALL | |
- build: 1 | |
build-type: Debug | |
build-shared: 'ON' | |
build-docs: 'OFF' | |
build-openfx: 'OFF' | |
use-simd: 'ON' | |
use-oiio: 'OFF' | |
cxx-standard: 11 | |
cxx-compiler: g++ | |
cc-compiler: gcc | |
compiler-desc: GCC | |
vfx-cy: 2021 | |
install-ext-packages: ALL | |
env: | |
CXX: ${{ matrix.cxx-compiler }} | |
CC: ${{ matrix.cc-compiler }} | |
steps: | |
# Install nodejs 20 with glibc 2.17, to work around the face that the | |
# GHA runners are insisting on a node version that is too new for the | |
# glibc in the ASWF containers prior to 2023. | |
- name: Install nodejs20glibc2.17 | |
run: | | |
curl --silent https://unofficial-builds.nodejs.org/download/release/v20.18.1/node-v20.18.1-linux-x64-glibc-217.tar.xz | tar -xJ --strip-components 1 -C /node20217 -f - | |
# We would like to use harden-runner, but it flags too many false | |
# positives, every time we download a dependency. We should use it only | |
# on CI runs where we are producing artifacts that users might rely on. | |
# - name: Harden Runner | |
# uses: step-security/harden-runner@248ae51c2e8cc9622ecf50685c8bf7150c6e8813 # v1.4.3 | |
# with: | |
# egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs | |
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 | |
# Note: can't upgrade to actions/checkout 4.0 because it needs newer | |
# glibc than these containers have. | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Install docs env | |
run: share/ci/scripts/linux/yum/install_docs_env.sh | |
if: matrix.build-docs == 'ON' | |
- name: Install tests env | |
run: share/ci/scripts/linux/yum/install_tests_env.sh | |
- name: Create build directories | |
run: | | |
mkdir _install | |
mkdir _build | |
- name: Configure | |
run: | | |
cmake ../. \ | |
-DCMAKE_INSTALL_PREFIX=../_install \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \ | |
-DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \ | |
-DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \ | |
-DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \ | |
-DOCIO_BUILD_OPENFX=${{ matrix.build-openfx }} \ | |
-DOCIO_BUILD_GPU_TESTS=OFF \ | |
-DOCIO_USE_SIMD=${{ matrix.use-simd }} \ | |
-DOCIO_USE_OIIO_FOR_APPS=${{ matrix.use-oiio }} \ | |
-DOCIO_INSTALL_EXT_PACKAGES=${{ matrix.install-ext-packages }} \ | |
-DOCIO_WARNING_AS_ERROR=ON \ | |
-DPython_EXECUTABLE=$(which python) | |
working-directory: _build | |
- name: Build | |
run: | | |
cmake --build . \ | |
--target install \ | |
--config ${{ matrix.build-type }} \ | |
-- -j$(nproc) | |
echo "ocio_build_path=$(pwd)" >> $GITHUB_ENV | |
working-directory: _build | |
- name: Test | |
run: ctest -V -C ${{ matrix.build-type }} | |
working-directory: _build | |
- name: Test CMake Consumer with shared OCIO | |
if: matrix.build-shared == 'ON' | |
run: | | |
cmake . \ | |
-DCMAKE_PREFIX_PATH=../../../_install \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} | |
cmake --build . \ | |
--config ${{ matrix.build-type }} | |
./consumer | |
working-directory: _build/tests/cmake-consumer-dist | |
- name: Test CMake Consumer with static OCIO | |
if: matrix.build-shared == 'OFF' | |
# The yaml-cpp_VERSION is set below because Findyaml-cpp.cmake needs it but is unable to | |
# extract it from the headers, like the other modules. | |
# | |
# Prefer the static version of each dependencies by using <pkg>_STATIC_LIBRARY. | |
# Alternatively, this can be done by setting <pkg>_LIBRARY and <pkg>_INCLUDE_DIR to | |
# the static version of the package. | |
run: | | |
cmake . \ | |
-DCMAKE_PREFIX_PATH=../../../_install \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \ | |
-Dexpat_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-Dexpat_STATIC_LIBRARY=ON \ | |
-DImath_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-DImath_STATIC_LIBRARY=ON \ | |
-Dpystring_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-Dyaml-cpp_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-Dyaml-cpp_STATIC_LIBRARY=ON \ | |
-Dyaml-cpp_VERSION=0.7.0 \ | |
-DZLIB_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-DZLIB_STATIC_LIBRARY=ON \ | |
-Dminizip-ng_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-Dminizip-ng_STATIC_LIBRARY=ON | |
cmake --build . \ | |
--config ${{ matrix.build-type }} | |
./consumer | |
working-directory: _build/tests/cmake-consumer-dist | |
# --------------------------------------------------------------------------- | |
# macOS | |
# --------------------------------------------------------------------------- | |
macos: | |
name: 'macOS 13 | |
<AppleClang | |
arch=${{ matrix.arch-type }}, | |
config=${{ matrix.build-type }}, | |
shared=${{ matrix.build-shared }}, | |
simd=${{ matrix.use-simd }}, | |
cxx=${{ matrix.cxx-standard }}, | |
python=${{ matrix.python-version }}, | |
docs=${{ matrix.build-docs }}, | |
oiio=${{ matrix.use-oiio}}>' | |
# Avoid duplicated checks when a pull_request is opened from a local branch. | |
if: | | |
github.event_name == 'push' || | |
github.event.pull_request.head.repo.full_name != github.repository | |
runs-on: macos-13 | |
strategy: | |
matrix: | |
build: [1, 2, 3, 4] | |
include: | |
- build: 5 | |
arch-type: "x86_64" | |
build-type: Release | |
build-shared: 'ON' | |
build-docs: 'OFF' | |
build-openfx: 'ON' | |
use-simd: 'ON' | |
use-oiio: 'ON' | |
cxx-standard: 17 | |
python-version: '3.11' | |
# Keeping one universal build | |
- build: 4 | |
arch-type: "x86_64;arm64" | |
build-type: Release | |
build-shared: 'ON' | |
build-docs: 'OFF' | |
build-openfx: 'OFF' | |
use-simd: 'ON' | |
use-oiio: 'OFF' | |
cxx-standard: 11 | |
python-version: '3.10' | |
- build: 3 | |
arch-type: "x86_64" | |
build-type: Release | |
build-shared: 'ON' | |
build-docs: 'ON' | |
build-openfx: 'OFF' | |
use-simd: 'OFF' | |
use-oiio: 'OFF' | |
cxx-standard: 11 | |
python-version: '3.10' | |
- build: 2 | |
arch-type: "x86_64" | |
build-type: Debug | |
build-shared: 'ON' | |
build-docs: 'OFF' | |
build-openfx: 'ON' | |
use-simd: 'ON' | |
use-oiio: 'OFF' | |
cxx-standard: 11 | |
python-version: '3.9' | |
- build: 1 | |
arch-type: "x86_64" | |
build-type: Release | |
build-shared: 'OFF' | |
build-docs: 'OFF' | |
build-openfx: 'ON' | |
use-simd: 'ON' | |
use-oiio: 'OFF' | |
cxx-standard: 14 | |
python-version: '3.7' | |
steps: | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install docs env | |
run: share/ci/scripts/macos/install_docs_env.sh | |
if: matrix.build-docs == 'ON' | |
- name: Install tests env | |
run: share/ci/scripts/macos/install_tests_env.sh | |
- name: Create build directories | |
run: | | |
mkdir _install | |
mkdir _build | |
- name: Configure | |
run: | | |
cmake ../. \ | |
-DCMAKE_INSTALL_PREFIX=../_install \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \ | |
-DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \ | |
-DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \ | |
-DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \ | |
-DOCIO_BUILD_OPENFX=${{ matrix.build-openfx }} \ | |
-DOCIO_BUILD_GPU_TESTS=OFF \ | |
-DOCIO_USE_SIMD=${{ matrix.use-simd }} \ | |
-DOCIO_USE_OIIO_FOR_APPS=${{ matrix.use-oiio }} \ | |
-DOCIO_INSTALL_EXT_PACKAGES=ALL \ | |
-DOCIO_WARNING_AS_ERROR=ON \ | |
-DPython_EXECUTABLE=$(which python) \ | |
-DCMAKE_OSX_ARCHITECTURES="${{ matrix.arch-type }}" | |
working-directory: _build | |
- name: Build | |
run: | | |
cmake --build . \ | |
--target install \ | |
--config ${{ matrix.build-type }} \ | |
-- -j$(sysctl -n hw.ncpu) | |
echo "ocio_build_path=$(pwd)" >> $GITHUB_ENV | |
working-directory: _build | |
- name: Test | |
run: ctest -V -C ${{ matrix.build-type }} | |
working-directory: _build | |
- name: Test CMake Consumer with shared OCIO | |
if: matrix.build-shared == 'ON' | |
run: | | |
cmake . \ | |
-DCMAKE_PREFIX_PATH=../../../_install \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} | |
cmake --build . \ | |
--config ${{ matrix.build-type }} | |
./consumer | |
working-directory: _build/tests/cmake-consumer-dist | |
- name: Test CMake Consumer with static OCIO | |
if: matrix.build-shared == 'OFF' | |
# The yaml-cpp_VERSION is set below because Findyaml-cpp.cmake needs it but is unable to | |
# extract it from the headers, like the other modules. | |
# | |
# Prefer the static version of each dependencies by using <pkg>_STATIC_LIBRARY. | |
# Alternatively, this can be done by setting <pkg>_LIBRARY and <pkg>_INCLUDE_DIR to | |
# the static version of the package. | |
run: | | |
cmake . \ | |
-DCMAKE_PREFIX_PATH=../../../_install \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \ | |
-Dexpat_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-Dexpat_STATIC_LIBRARY=ON \ | |
-DImath_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-DImath_STATIC_LIBRARY=ON \ | |
-Dpystring_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-Dyaml-cpp_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-Dyaml-cpp_STATIC_LIBRARY=ON \ | |
-Dyaml-cpp_VERSION=0.7.0 \ | |
-DZLIB_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-DZLIB_STATIC_LIBRARY=ON \ | |
-Dminizip-ng_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-Dminizip-ng_STATIC_LIBRARY=ON | |
cmake --build . \ | |
--config ${{ matrix.build-type }} | |
./consumer | |
working-directory: _build/tests/cmake-consumer-dist | |
# --------------------------------------------------------------------------- | |
# macOS Arm | |
# --------------------------------------------------------------------------- | |
macos-arm: | |
name: 'macOS 14 arm | |
<AppleClang | |
arch=${{ matrix.arch-type }}, | |
config=${{ matrix.build-type }}, | |
shared=${{ matrix.build-shared }}, | |
simd=${{ matrix.use-simd }}, | |
cxx=${{ matrix.cxx-standard }}, | |
python=${{ matrix.python-version }}, | |
docs=${{ matrix.build-docs }}, | |
oiio=${{ matrix.use-oiio}}>' | |
runs-on: macos-14 | |
strategy: | |
matrix: | |
build: [1, 2] | |
include: | |
- build: 1 | |
arch-type: "arm64" | |
test-rosetta: "OFF" | |
build-type: Release | |
build-shared: 'ON' | |
build-docs: 'OFF' | |
build-openfx: 'OFF' | |
use-simd: 'ON' | |
use-oiio: 'OFF' | |
cxx-standard: 11 | |
python-version: '3.11' | |
- build: 2 | |
arch-type: "x86_64;arm64" | |
test-rosetta: "ON" | |
build-type: Release | |
build-shared: 'ON' | |
build-docs: 'OFF' | |
build-openfx: 'OFF' | |
use-simd: 'ON' | |
use-oiio: 'OFF' | |
cxx-standard: 11 | |
python-version: '3.11' | |
steps: | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install docs env | |
run: share/ci/scripts/macos/install_docs_env.sh | |
if: matrix.build-docs == 'ON' | |
- name: Install tests env | |
run: share/ci/scripts/macos/install_tests_env.sh | |
- name: Create build directories | |
run: | | |
mkdir _install | |
mkdir _build | |
- name: Configure | |
run: | | |
cmake ../. \ | |
-DCMAKE_INSTALL_PREFIX=../_install \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \ | |
-DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \ | |
-DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \ | |
-DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \ | |
-DOCIO_BUILD_OPENFX=${{ matrix.build-openfx }} \ | |
-DOCIO_BUILD_GPU_TESTS=OFF \ | |
-DOCIO_USE_SIMD=${{ matrix.use-simd }} \ | |
-DOCIO_USE_OIIO_FOR_APPS=${{ matrix.use-oiio }} \ | |
-DOCIO_INSTALL_EXT_PACKAGES=ALL \ | |
-DOCIO_WARNING_AS_ERROR=ON \ | |
-DPython_EXECUTABLE=$(which python) \ | |
-DCMAKE_OSX_ARCHITECTURES="${{ matrix.arch-type }}" | |
working-directory: _build | |
- name: Build | |
run: | | |
cmake --build . \ | |
--target install \ | |
--config ${{ matrix.build-type }} \ | |
-- -j$(sysctl -n hw.ncpu) | |
echo "ocio_build_path=$(pwd)" >> $GITHUB_ENV | |
working-directory: _build | |
- name: Test | |
run: ctest -V -C ${{ matrix.build-type }} | |
working-directory: _build | |
- name: Test Rosetta | |
if: matrix.test-rosetta == 'ON' | |
run: | | |
/usr/bin/arch -x86_64 /bin/zsh -c "ctest -V -C ${{ matrix.build-type }}" | |
working-directory: _build | |
- name: Test CMake Consumer with shared OCIO | |
if: matrix.build-shared == 'ON' | |
run: | | |
cmake . \ | |
-DCMAKE_PREFIX_PATH=../../../_install \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} | |
cmake --build . \ | |
--config ${{ matrix.build-type }} | |
./consumer | |
working-directory: _build/tests/cmake-consumer-dist | |
- name: Test CMake Consumer with static OCIO | |
if: matrix.build-shared == 'OFF' | |
# The yaml-cpp_VERSION is set below because Findyaml-cpp.cmake needs it but is unable to | |
# extract it from the headers, like the other modules. | |
# | |
# Prefer the static version of each dependencies by using <pkg>_STATIC_LIBRARY. | |
# Alternatively, this can be done by setting <pkg>_LIBRARY and <pkg>_INCLUDE_DIR to | |
# the static version of the package. | |
run: | | |
cmake . \ | |
-DCMAKE_PREFIX_PATH=../../../_install \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \ | |
-Dexpat_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-Dexpat_STATIC_LIBRARY=ON \ | |
-DImath_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-DImath_STATIC_LIBRARY=ON \ | |
-Dpystring_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-Dyaml-cpp_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-Dyaml-cpp_STATIC_LIBRARY=ON \ | |
-Dyaml-cpp_VERSION=0.7.0 \ | |
-DZLIB_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-DZLIB_STATIC_LIBRARY=ON \ | |
-Dminizip-ng_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-Dminizip-ng_STATIC_LIBRARY=ON | |
cmake --build . \ | |
--config ${{ matrix.build-type }} | |
./consumer | |
working-directory: _build/tests/cmake-consumer-dist | |
# --------------------------------------------------------------------------- | |
# Windows | |
# --------------------------------------------------------------------------- | |
# TODO: Install pythonXX_d.lib (or work around it being needed) to support | |
# Debug build testing with Python bindings and docs enabled. | |
windows: | |
name: 'Windows 2019 | |
<MSVC | |
config=${{ matrix.build-type }}, | |
shared=${{ matrix.build-shared }}, | |
simd=${{ matrix.use-simd }}, | |
cxx=${{ matrix.cxx-standard }}, | |
python=${{ matrix.python-version }}, | |
docs=${{ matrix.build-docs }}, | |
oiio=${{ matrix.use-oiio }}>' | |
# Avoid duplicated checks when a pull_request is opened from a local branch. | |
if: | | |
github.event_name == 'push' || | |
github.event.pull_request.head.repo.full_name != github.repository | |
runs-on: windows-2019 | |
strategy: | |
matrix: | |
build: [1, 2, 3, 4] | |
include: | |
- build: 4 | |
build-type: Release | |
build-shared: 'ON' | |
build-docs: 'OFF' | |
build-openfx: 'ON' | |
use-simd: 'OFF' | |
use-oiio: 'ON' | |
cxx-standard: 17 | |
python-version: '3.11' | |
- build: 3 | |
build-type: Release | |
build-shared: 'OFF' | |
build-docs: 'OFF' | |
build-openfx: 'OFF' | |
use-simd: 'ON' | |
use-oiio: 'OFF' | |
cxx-standard: 11 | |
python-version: '3.9' | |
- build: 2 | |
build-type: Debug | |
build-shared: 'ON' | |
build-docs: 'OFF' | |
build-openfx: 'OFF' | |
use-simd: 'ON' | |
use-oiio: 'OFF' | |
cxx-standard: 11 | |
python-version: '3.8' | |
# C++14, OpenEXR, OpenFX | |
- build: 1 | |
build-type: Release | |
build-shared: 'ON' | |
build-docs: 'OFF' | |
build-openfx: 'ON' | |
use-simd: 'ON' | |
use-oiio: 'OFF' | |
cxx-standard: 14 | |
python-version: '3.7' | |
steps: | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install docs env | |
run: | | |
DOXYGEN_PATH=$GITHUB_WORKSPACE/doxygen | |
share/ci/scripts/windows/install_docs_env.sh "$DOXYGEN_PATH" | |
echo "$DOXYGEN_PATH" >> $GITHUB_PATH | |
shell: bash | |
if: matrix.build-docs == 'ON' | |
- name: Install tests env | |
run: share/ci/scripts/windows/install_tests_env.sh | |
shell: bash | |
- name: Create build directories | |
run: | | |
mkdir _install | |
mkdir _build | |
shell: bash | |
- name: Configure | |
run: | | |
cmake ../. \ | |
-DCMAKE_INSTALL_PREFIX=../_install \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \ | |
-DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \ | |
-DCMAKE_GENERATOR_PLATFORM=x64 \ | |
-DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \ | |
-DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \ | |
-DOCIO_BUILD_OPENFX=${{ matrix.build-openfx }} \ | |
-DOCIO_BUILD_GPU_TESTS=OFF \ | |
-DOCIO_USE_SIMD=${{ matrix.use-simd }} \ | |
-DOCIO_USE_OIIO_FOR_APPS=${{ matrix.use-oiio }} \ | |
-DOCIO_INSTALL_EXT_PACKAGES=ALL \ | |
-DOCIO_WARNING_AS_ERROR=ON \ | |
-DPython_EXECUTABLE=$(which python) | |
shell: bash | |
working-directory: _build | |
- name: Build | |
run: | | |
cmake --build . \ | |
--target install \ | |
--config ${{ matrix.build-type }} | |
echo "ocio_build_path=$(pwd)" >> $GITHUB_ENV | |
shell: bash | |
working-directory: _build | |
- name: Test | |
run: ctest -V -C ${{ matrix.build-type }} | |
shell: bash | |
working-directory: _build | |
- name: Test CMake Consumer with shared OCIO | |
if: matrix.build-shared == 'ON' | |
run: | | |
cmake . \ | |
-DCMAKE_PREFIX_PATH=../../../_install \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} | |
cmake --build . \ | |
--config ${{ matrix.build-type }} | |
export PATH=../../../_install/bin:$PATH | |
./${{ matrix.build-type }}/consumer | |
shell: bash | |
working-directory: _build/tests/cmake-consumer-dist | |
- name: Test CMake Consumer with static OCIO | |
if: matrix.build-shared == 'OFF' | |
# The yaml-cpp_VERSION is set below because Findyaml-cpp.cmake needs it but is unable to | |
# extract it from the headers, like the other modules. | |
# | |
# Prefer the static version of each dependencies by using <pkg>_STATIC_LIBRARY. | |
# Alternatively, this can be done by setting <pkg>_LIBRARY and <pkg>_INCLUDE_DIR to | |
# the static version of the package. | |
run: | | |
cmake . \ | |
-DCMAKE_PREFIX_PATH=../../../_install \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \ | |
-Dexpat_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-Dexpat_STATIC_LIBRARY=ON \ | |
-DImath_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-DImath_STATIC_LIBRARY=ON \ | |
-Dpystring_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-Dyaml-cpp_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-Dyaml-cpp_STATIC_LIBRARY=ON \ | |
-Dyaml-cpp_VERSION=0.7.0 \ | |
-DZLIB_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-DZLIB_STATIC_LIBRARY=ON \ | |
-Dminizip-ng_ROOT=${{ env.ocio_build_path }}/ext/dist \ | |
-Dminizip-ng_STATIC_LIBRARY=ON | |
cmake --build . \ | |
--config ${{ matrix.build-type }} | |
export PATH=../../../_install/bin:$PATH | |
./${{ matrix.build-type }}/consumer | |
shell: bash | |
working-directory: _build/tests/cmake-consumer-dist |