shell #8987
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
# Copyright Contributors to the OpenImageIO project. | |
# SPDX-License-Identifier: Apache-2.0 | |
# https://github.com/AcademySoftwareFoundation/OpenImageIO | |
name: CI | |
on: | |
push: | |
# Skip jobs when only documentation files are changed | |
paths: | |
- '**' | |
- '!**.md' | |
- '!**.rst' | |
- '!**/analysis.yml' | |
- '!**/docs.yml' | |
- '!**.properties' | |
- '!docs/**' | |
pull_request: | |
paths: | |
- '**' | |
- '!**.md' | |
- '!**.rst' | |
- '!docs/**' | |
schedule: | |
# Full nightly build | |
- cron: "0 8 * * *" | |
if: github.repository == 'AcademySoftwareFoundation/OpenImageIO' | |
workflow_dispatch: | |
# This allows manual triggering of the workflow from the web | |
permissions: read-all | |
jobs: | |
step_aswf: | |
name: "${{matrix.desc}}" | |
uses: ./.github/workflows/ci-steps.yml | |
with: | |
runner: ${{ matrix.runner || 'ubuntu-latest' }} | |
container: ${{ matrix.container }} | |
cc_compiler: ${{ matrix.cc_compiler }} | |
cxx_compiler: ${{ matrix.cxx_compiler }} | |
cxx_std: ${{ matrix.cxx_std || '17' }} | |
depcmds: ${{ matrix.depcmds }} | |
extra_artifacts: ${{ matrix.extra_artifacts }} | |
fmt_ver: ${{ matrix.fmt_ver }} | |
opencolorio_ver: ${{ matrix.opencolorio_ver }} | |
openexr_ver: ${{ matrix.openexr_ver }} | |
pybind11_ver: ${{ matrix.pybind11_ver }} | |
python_ver: ${{ matrix.python_ver }} | |
setenvs: ${{ matrix.setenvs }} | |
simd: ${{ matrix.simd }} | |
skip_tests: ${{ matrix.skip_tests }} | |
abi_check: ${{ matrix.abi_check }} | |
build_docs: ${{ matrix.build_docs }} | |
generator: ${{ matrix.generator }} | |
ctest_args: ${{ matrix.ctest_args }} | |
nametag: ${{ matrix.nametag || 'unnamed!' }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- desc: VFX2021 gcc9/C++17 py3.7 exr3.1 ocio2.0 | |
nametag: linux-vfx2021 | |
runner: ubuntu-latest | |
container: aswf/ci-osl:2021 | |
vfxyear: 2021 | |
openexr_ver: v3.1.13 | |
python_ver: 3.7 | |
simd: "avx2,f16c" | |
fmt_ver: 7.1.0 | |
pybind11_ver: v2.7.0 | |
setenvs: export PUGIXML_VERSION=v1.9 WEBP_VERSION=v1.1.0 USE_OPENVDB=0 | |
FREETYPE_VERSION=VER-2-10-0 | |
- desc: VFX2021 clang10/C++17 avx2 exr3.1 ocio2.0 | |
nametag: linux-clang10-cpp14 | |
runner: ubuntu-latest | |
container: aswf/ci-osl:2021-clang10 | |
vfxyear: 2021 | |
cc_compiler: clang | |
cxx_compiler: clang++ | |
openexr_ver: v3.1.13 | |
pybind11_ver: v2.7.0 | |
python_ver: 3.7 | |
simd: "avx2,f16c" | |
fmt_ver: 8.1.1 | |
setenvs: export USE_OPENVDB=0 | |
FREETYPE_VERSION=VER-2-11-0 | |
- desc: VFX2022 gcc9/C++17 py39 exr3.1 ocio2.1 | |
nametag: linux-vfx2022 | |
runner: ubuntu-latest | |
container: aswf/ci-osl:2022-clang11 | |
vfxyear: 2022 | |
python_ver: 3.9 | |
simd: "avx2,f16c" | |
fmt_ver: 8.1.1 | |
pybind11_ver: v2.9.0 | |
setenvs: export FREETYPE_VERSION=VER-2-12-0 | |
- desc: VFX2022 clang13/C++17 py39 avx2 exr3.1 ocio2.1 | |
nametag: linux-vfx2022-clang13 | |
runner: ubuntu-latest | |
container: aswf/ci-osl:2022-clang13 | |
vfxyear: 2022 | |
cc_compiler: clang | |
cxx_compiler: clang++ | |
python_ver: 3.9 | |
simd: "avx2,f16c" | |
fmt_ver: 9.1.0 | |
pybind11_ver: v2.8.1 | |
setenvs: export FREETYPE_VERSION=VER-2-12-0 | |
- desc: VFX20222 icc/C++17 py3.9 exr3.1 ocio2.1 qt5.15 | |
nametag: linux-vfx2022-icc | |
runner: ubuntu-latest | |
container: aswf/ci-osl:2022 | |
vfxyear: 2022 | |
opencolorio_ver: v2.2.1 | |
python_ver: 3.9 | |
# simd: "avx2,f16c" | |
fmt_ver: 7.1.3 | |
# icc MUST use this older FMT version | |
pybind11_ver: v2.9.0 | |
setenvs: export USE_ICC=1 USE_OPENVDB=0 | |
OIIO_EXTRA_CPP_ARGS="-fp-model=precise" | |
FREETYPE_VERSION=VER-2-13-0 | |
DISABLE_libuhdr=1 | |
# For icc, use fp-model precise to eliminate needless LSB errors | |
# that make test results differ from other platforms. | |
- desc: VFX20222 icx/C++17 py3.9 exr3.1 ocio2.2 qt5.15 | |
nametag: linux-vfx2022-icx | |
runner: ubuntu-latest | |
container: aswf/ci-osl:2022 | |
vfxyear: 2022 | |
cc_compiler: icx | |
cxx_compiler: icpx | |
opencolorio_ver: v2.3.2 | |
python_ver: 3.9 | |
pybind11_ver: v2.9.0 | |
simd: "avx2,f16c" | |
setenvs: export USE_OPENVDB=0 | |
OPENCOLORIO_CXX=g++ | |
UHDR_CMAKE_C_COMPILER=gcc | |
UHDR_CMAKE_CXX_COMPILER=g++ | |
# OCIO doesn't build with icx, so we have to force the ocio build | |
# to use g++. | |
# Building libuhdr with icx results in test failures | |
# so we force using gcc/g++. | |
- desc: VFX2024 sanitizers | |
nametag: sanitizer | |
runner: ubuntu-latest | |
container: aswf/ci-osl:2024-clang17 | |
vfxyear: 2024 | |
cc_compiler: clang | |
cxx_compiler: clang++ | |
opencolorio_ver: v2.3.2 | |
python_ver: "3.11" | |
setenvs: export SANITIZE=address,undefined | |
OIIO_CMAKE_FLAGS="-DSANITIZE=address,undefined -DUSE_PYTHON=0" | |
CMAKE_BUILD_TYPE=Debug | |
CTEST_TEST_TIMEOUT=1200 | |
CTEST_EXCLUSIONS="broken|png-damaged" | |
- desc: VFX2023 gcc11/C++17 py3.10 exr3.1 ocio2.2 | |
nametag: linux-vfx2023 | |
runner: ubuntu-latest | |
container: aswftesting/ci-osl:2023-clang15 | |
vfxyear: 2023 | |
python_ver: "3.10" | |
simd: "avx2,f16c" | |
fmt_ver: 10.1.1 | |
pybind11_ver: v2.10.0 | |
- desc: VFX2024 gcc11/C++17 py3.11 exr3.2 ocio2.3 | |
nametag: linux-vfx2024 | |
runner: ubuntu-latest | |
container: aswftesting/ci-osl:2024-clang17 | |
vfxyear: 2024 | |
python_ver: "3.11" | |
simd: "avx2,f16c" | |
fmt_ver: 10.1.1 | |
pybind11_ver: v2.12.0 | |
- desc: VFX2021 oldest gcc9.3/C++17 py3.7 exr-3.1 | |
# Oldest versions of the dependencies that we support. | |
nametag: linux-oldest | |
runner: ubuntu-latest | |
container: aswf/ci-osl:2021 | |
vfxyear: 2021 | |
fmt_ver: 7.0.1 | |
opencolorio_ver: v2.2.1 | |
openexr_ver: v3.1.0 | |
pybind11_ver: v2.7.0 | |
python_ver: 3.7 | |
setenvs: export CMAKE_VERSION=3.18.2 | |
PTEX_VERSION=v2.3.2 | |
WEBP_VERSION=v1.1.0 | |
depcmds: sudo rm -rf /usr/local/include/OpenEXR | |
- desc: VFX2021 hobbled gcc9.3/C++17 py3.7 exr-3.1 no-sse | |
# Use the oldest supported versions of required dependencies, and | |
# disable most optional dependencies and features (no SSE or | |
# OpenCV, don't embed plugins). | |
nametag: linux-disabled | |
runner: ubuntu-latest | |
container: aswf/ci-osl:2021 | |
vfxyear: 2021 | |
fmt_ver: 7.0.1 | |
opencolorio_ver: v2.2.1 | |
openexr_ver: v3.1.0 | |
pybind11_ver: v2.4.2 | |
python_ver: 3.7 | |
simd: 0 | |
setenvs: export EMBEDPLUGINS=0 | |
CMAKE_VERSION=3.18.2 | |
PTEX_VERSION=v2.3.2 | |
WEBP_VERSION=v1.1.0 | |
USE_JPEGTURBO=0 | |
USE_OPENCV=0 | |
FREETYPE_VERSION=VER-2-10-0 | |
depcmds: sudo rm -rf /usr/local/include/OpenEXR | |
# Test ABI stability. `abi_check` is the version or commit that we | |
# believe is the current standard against which we don't want to | |
# break the ABI. Basically, we will build that version as well as | |
# the current one, and compare the resulting libraries. | |
- desc: VFX2023 abi check | |
nametag: abi-check | |
runner: ubuntu-latest | |
container: aswftesting/ci-osl:2023-clang15 | |
vfxyear: 2023 | |
python_ver: "3.10" | |
simd: "avx2,f16c" | |
fmt_ver: 10.1.1 | |
pybind11_ver: v2.10.0 | |
skip_tests: 1 | |
# abi_check: v2.6.2.0 | |
abi_check: 7929c81619ea8201065c475761546d51091f6773 | |
setenvs: export OIIO_CMAKE_FLAGS="-DOIIO_BUILD_TOOLS=0 -DOIIO_BUILD_TESTS=0 -DUSE_PYTHON=0" | |
USE_OPENCV=0 USE_FFMPEG=0 USE_PYTHON=0 USE_FREETYPE=0 | |
CMAKE_BUILD_TYPE=RelWithDebInfo | |
# | |
# Mac Tests | |
# | |
- desc: MacOS-13-Intel aclang14/C++17/py3.11 | |
runner: macos-13 | |
nametag: macos13-py311 | |
cc_compiler: clang | |
cxx_compiler: clang++ | |
cxx_std: 17 | |
python_ver: "3.11" | |
simd: sse4.2,avx2 | |
ctest_test_timeout: 800 | |
setenvs: export MACOSX_DEPLOYMENT_TARGET=12.0 | |
- desc: MacOS-14-ARM aclang15/C++20/py3.12 | |
runner: macos-14 | |
nametag: macos14-arm-py312 | |
cc_compiler: clang | |
cxx_compiler: clang++ | |
cxx_std: 20 | |
python_ver: "3.12" | |
ctest_test_timeout: 800 | |
- desc: MacOS-15-ARM aclang16/C++20/py3.13 | |
runner: macos-15 | |
nametag: macos15-arm-py313 | |
cc_compiler: clang | |
cxx_compiler: clang++ | |
cxx_std: 20 | |
python_ver: "3.13" | |
ctest_test_timeout: 800 | |
# | |
# Windows Tests | |
# | |
- desc: Windows-2019 VS2019 | |
runner: windows-2019 | |
vsver: 2019 | |
generator: "Visual Studio 16 2019" | |
# openexr_ver: v3.2.4 | |
python_ver: 3.7 | |
# simd: sse4.2 | |
- desc: Windows-2022 VS2022 | |
runner: windows-2022 | |
vsver: 2022 | |
generator: "Visual Studio 17 2022" | |
# openexr_ver: v3.2.4 | |
python_ver: "3.9" | |
# simd: sse4.2 | |
# setenvs: export OpenImageIO_BUILD_MISSING_DEPS=none | |
# oldaswf: | |
# if: 0 | |
# name: "OLD VFX${{matrix.vfxyear}} ${{matrix.desc}}" | |
# strategy: | |
# fail-fast: false | |
# matrix: | |
# include: | |
# - desc: gcc9/C++17 py3.7 exr3.1 ocio2.0 | |
# nametag: linux-vfx2021 | |
# runner: ubuntu-latest | |
# container: aswf/ci-osl:2021 | |
# vfxyear: 2021 | |
# cxx_std: 17 | |
# openexr_ver: v3.1.13 | |
# python_ver: 3.7 | |
# simd: "avx2,f16c" | |
# fmt_ver: 7.1.0 | |
# pybind11_ver: v2.7.0 | |
# setenvs: export PUGIXML_VERSION=v1.9 WEBP_VERSION=v1.1.0 USE_OPENVDB=0 | |
# FREETYPE_VERSION=VER-2-10-0 | |
# - desc: clang10/C++17 avx2 exr3.1 ocio2.0 | |
# nametag: linux-clang10-cpp14 | |
# runner: ubuntu-latest | |
# container: aswf/ci-osl:2021-clang10 | |
# vfxyear: 2021 | |
# cc_compiler: clang | |
# cxx_compiler: clang++ | |
# cxx_std: 17 | |
# openexr_ver: v3.1.13 | |
# pybind11_ver: v2.7.0 | |
# python_ver: 3.7 | |
# simd: "avx2,f16c" | |
# fmt_ver: 8.1.1 | |
# setenvs: export USE_OPENVDB=0 | |
# FREETYPE_VERSION=VER-2-11-0 | |
# - desc: gcc9/C++17 py39 exr3.1 ocio2.1 | |
# nametag: linux-vfx2022 | |
# runner: ubuntu-latest | |
# container: aswf/ci-osl:2022-clang11 | |
# vfxyear: 2022 | |
# cxx_std: 17 | |
# python_ver: 3.9 | |
# simd: "avx2,f16c" | |
# fmt_ver: 8.1.1 | |
# pybind11_ver: v2.9.0 | |
# setenvs: export FREETYPE_VERSION=VER-2-12-0 | |
# - desc: clang13/C++17 py39 avx2 exr3.1 ocio2.1 | |
# nametag: linux-vfx2022-clang13 | |
# runner: ubuntu-latest | |
# container: aswf/ci-osl:2022-clang13 | |
# vfxyear: 2022 | |
# cc_compiler: clang | |
# cxx_compiler: clang++ | |
# cxx_std: 17 | |
# python_ver: 3.9 | |
# simd: "avx2,f16c" | |
# fmt_ver: 9.1.0 | |
# pybind11_ver: v2.8.1 | |
# setenvs: export FREETYPE_VERSION=VER-2-12-0 | |
# - desc: icc/C++17 py3.9 exr3.1 ocio2.1 qt5.15 | |
# nametag: linux-vfx2022-icc | |
# runner: ubuntu-latest | |
# container: aswf/ci-osl:2022 | |
# vfxyear: 2022 | |
# cxx_std: 17 | |
# opencolorio_ver: v2.2.1 | |
# python_ver: 3.9 | |
# # simd: "avx2,f16c" | |
# fmt_ver: 7.1.3 | |
# # icc MUST use this older FMT version | |
# pybind11_ver: v2.9.0 | |
# setenvs: export USE_ICC=1 USE_OPENVDB=0 | |
# OIIO_EXTRA_CPP_ARGS="-fp-model=precise" | |
# FREETYPE_VERSION=VER-2-13-0 | |
# DISABLE_libuhdr=1 | |
# # For icc, use fp-model precise to eliminate needless LSB errors | |
# # that make test results differ from other platforms. | |
# - desc: icx/C++17 py3.9 exr3.1 ocio2.2 qt5.15 | |
# nametag: linux-vfx2022-icx | |
# runner: ubuntu-latest | |
# container: aswf/ci-osl:2022 | |
# vfxyear: 2022 | |
# cc_compiler: icx | |
# cxx_compiler: icpx | |
# cxx_std: 17 | |
# opencolorio_ver: v2.3.2 | |
# python_ver: 3.9 | |
# pybind11_ver: v2.9.0 | |
# simd: "avx2,f16c" | |
# setenvs: export USE_OPENVDB=0 | |
# OPENCOLORIO_CXX=g++ | |
# UHDR_CMAKE_C_COMPILER=gcc | |
# UHDR_CMAKE_CXX_COMPILER=g++ | |
# # OCIO doesn't build with icx, so we have to force the ocio build | |
# # to use g++. | |
# # Building libuhdr with icx results in test failures | |
# # so we force using gcc/g++. | |
# - desc: sanitizers | |
# nametag: sanitizer | |
# runner: ubuntu-latest | |
# container: aswf/ci-osl:2024-clang17 | |
# vfxyear: 2024 | |
# cc_compiler: clang | |
# cxx_compiler: clang++ | |
# cxx_std: 17 | |
# opencolorio_ver: v2.3.2 | |
# python_ver: "3.11" | |
# setenvs: export SANITIZE=address,undefined | |
# OIIO_CMAKE_FLAGS="-DSANITIZE=address,undefined -DUSE_PYTHON=0" | |
# CMAKE_BUILD_TYPE=Debug | |
# CTEST_TEST_TIMEOUT=1200 | |
# CTEST_EXCLUSIONS="broken|png-damaged" | |
# - desc: gcc11/C++17 py3.10 exr3.1 ocio2.2 | |
# nametag: linux-vfx2023 | |
# runner: ubuntu-latest | |
# container: aswftesting/ci-osl:2023-clang15 | |
# vfxyear: 2023 | |
# cxx_std: 17 | |
# python_ver: "3.10" | |
# simd: "avx2,f16c" | |
# fmt_ver: 10.1.1 | |
# pybind11_ver: v2.10.0 | |
# - desc: gcc11/C++17 py3.11 exr3.2 ocio2.3 | |
# nametag: linux-vfx2024 | |
# runner: ubuntu-latest | |
# container: aswftesting/ci-osl:2024-clang17 | |
# vfxyear: 2024 | |
# cxx_std: 17 | |
# python_ver: "3.11" | |
# simd: "avx2,f16c" | |
# fmt_ver: 10.1.1 | |
# pybind11_ver: v2.12.0 | |
# - desc: oldest gcc9.3/C++17 py3.7 exr-3.1 | |
# # Oldest versions of the dependencies that we support. | |
# nametag: linux-oldest | |
# runner: ubuntu-latest | |
# container: aswf/ci-osl:2021 | |
# vfxyear: 2021 | |
# cxx_std: 17 | |
# fmt_ver: 7.0.1 | |
# opencolorio_ver: v2.2.1 | |
# openexr_ver: v3.1.0 | |
# pybind11_ver: v2.7.0 | |
# python_ver: 3.7 | |
# setenvs: export CMAKE_VERSION=3.18.2 | |
# PTEX_VERSION=v2.3.2 | |
# WEBP_VERSION=v1.1.0 | |
# depcmds: sudo rm -rf /usr/local/include/OpenEXR | |
# - desc: hobbled gcc9.3/C++17 py3.7 exr-3.1 no-sse | |
# # Use the oldest supported versions of required dependencies, and | |
# # disable most optional dependencies and features (no SSE or | |
# # OpenCV, don't embed plugins). | |
# nametag: linux-disabled | |
# runner: ubuntu-latest | |
# container: aswf/ci-osl:2021 | |
# vfxyear: 2021 | |
# cxx_std: 17 | |
# fmt_ver: 7.0.1 | |
# opencolorio_ver: v2.2.1 | |
# openexr_ver: v3.1.0 | |
# pybind11_ver: v2.4.2 | |
# python_ver: 3.7 | |
# simd: 0 | |
# setenvs: export EMBEDPLUGINS=0 | |
# CMAKE_VERSION=3.18.2 | |
# PTEX_VERSION=v2.3.2 | |
# WEBP_VERSION=v1.1.0 | |
# USE_JPEGTURBO=0 | |
# USE_OPENCV=0 | |
# FREETYPE_VERSION=VER-2-10-0 | |
# depcmds: sudo rm -rf /usr/local/include/OpenEXR | |
# # Test ABI stability. `abi_check` is the version or commit that we | |
# # believe is the current standard against which we don't want to | |
# # break the ABI. Basically, we will build that version as well as | |
# # the current one, and compare the resulting libraries. | |
# - desc: abi check | |
# nametag: abi-check | |
# runner: ubuntu-latest | |
# container: aswftesting/ci-osl:2023-clang15 | |
# vfxyear: 2023 | |
# cxx_std: 17 | |
# python_ver: "3.10" | |
# simd: "avx2,f16c" | |
# fmt_ver: 10.1.1 | |
# pybind11_ver: v2.10.0 | |
# skip_tests: 1 | |
# # abi_check: v2.6.2.0 | |
# abi_check: 7929c81619ea8201065c475761546d51091f6773 | |
# setenvs: export OIIO_CMAKE_FLAGS="-DOIIO_BUILD_TOOLS=0 -DOIIO_BUILD_TESTS=0 -DUSE_PYTHON=0" | |
# USE_OPENCV=0 USE_FFMPEG=0 USE_PYTHON=0 USE_FREETYPE=0 | |
# CMAKE_BUILD_TYPE=RelWithDebInfo | |
# - desc: MacOS-13-Intel aclang14/C++17/py3.11 | |
# runner: macos-13 | |
# nametag: macos13-py311 | |
# cc_compiler: clang | |
# cxx_compiler: clang++ | |
# cxx_std: 17 | |
# python_ver: "3.11" | |
# simd: sse4.2,avx2 | |
# ctest_test_timeout: 800 | |
# setenvs: export MACOSX_DEPLOYMENT_TARGET=12.0 | |
# - desc: MacOS-14-ARM aclang15/C++20/py3.12 | |
# runner: macos-14 | |
# nametag: macos14-arm-py312 | |
# cc_compiler: clang | |
# cxx_compiler: clang++ | |
# cxx_std: 20 | |
# python_ver: "3.12" | |
# ctest_test_timeout: 800 | |
# - desc: MacOS-15-ARM aclang16/C++20/py3.13 | |
# runner: macos-15 | |
# nametag: macos15-arm-py313 | |
# cc_compiler: clang | |
# cxx_compiler: clang++ | |
# cxx_std: 20 | |
# python_ver: "3.13" | |
# ctest_test_timeout: 800 | |
# runs-on: ${{ matrix.runner }} | |
# container: | |
# image: ${{ matrix.container }} | |
# env: | |
# CXX: ${{matrix.cxx_compiler}} | |
# CC: ${{matrix.cc_compiler}} | |
# CMAKE_CXX_STANDARD: ${{matrix.cxx_std}} | |
# USE_SIMD: ${{matrix.simd}} | |
# FMT_VERSION: ${{matrix.fmt_ver}} | |
# OPENCOLORIO_VERSION: ${{matrix.opencolorio_ver}} | |
# OPENEXR_VERSION: ${{matrix.openexr_ver}} | |
# PYBIND11_VERSION: ${{matrix.pybind11_ver}} | |
# PYTHON_VERSION: ${{matrix.python_ver}} | |
# ABI_CHECK: ${{matrix.abi_check}} | |
# ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16 | |
# ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true | |
# steps: | |
# # 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: Prepare ccache timestamp | |
# id: ccache_cache_keys | |
# run: echo "date=`date -u +'%Y-%m-%dT%H:%M:%SZ'`" >> $GITHUB_OUTPUT | |
# - name: ccache | |
# id: ccache | |
# uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3.3.3 | |
# # Note: can't upgrade to actions/cache 4.0 because it needs newer | |
# # glibc than these containers have. | |
# with: | |
# path: /tmp/ccache | |
# key: ${{github.job}}-${{matrix.nametag}}-${{steps.ccache_cache_keys.outputs.date}} | |
# restore-keys: ${{github.job}}- | |
# save-always: true | |
# - name: Build setup | |
# run: | | |
# ${{matrix.setenvs}} | |
# src/build-scripts/ci-startup.bash | |
# - name: Dependencies | |
# run: | | |
# ${{matrix.depcmds}} | |
# if [[ ${{matrix.runner}} == *"ubuntu-latest"* ]]; then | |
# src/build-scripts/gh-installdeps.bash | |
# elif [[ ${{matrix.runner}} == *"macos"* ]]; then | |
# src/build-scripts/install_homebrew_deps.bash | |
# elif [[ ${{matrix.runner}} == *"windows"* ]]; then | |
# src/build-scripts/win-installdeps.bash | |
# fi | |
# - name: Build | |
# if: matrix.skip_build != '1' | |
# run: src/build-scripts/ci-build.bash | |
# - name: Testsuite | |
# if: matrix.skip_tests != '1' | |
# run: src/build-scripts/ci-test.bash | |
# - name: Check out ABI standard | |
# if: matrix.abi_check != '' | |
# uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
# with: | |
# ref: ${{matrix.abi_check}} | |
# path: abi_standard | |
# - name: Build ABI standard | |
# if: matrix.abi_check != '' | |
# run: | | |
# mkdir -p abi_standard/build | |
# pushd abi_standard | |
# src/build-scripts/ci-build.bash | |
# popd | |
# - name: Check ABI | |
# if: matrix.abi_check != '' | |
# run: | | |
# src/build-scripts/ci-abicheck.bash ./build abi_standard/build libOpenImageIO libOpenImageIO_Util | |
# - name: Build Docs | |
# if: matrix.build_docs == '1' | |
# run: | | |
# cd src/doc | |
# time make doxygen | |
# time make sphinx | |
# - uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 | |
# # Note: versions of upload-artifact >= 4.0 can't run on the ASWF | |
# # containers because they need a newer glibc than they have. | |
# if: ${{ failure() || matrix.build_docs == '1'}} | |
# with: | |
# name: oiio-${{github.job}}-${{matrix.nametag}} | |
# path: | | |
# build/cmake-save | |
# build/compat_reports | |
# build/sphinx | |
# build/testsuite/*/*.* | |
# !build/testsuite/oiio-images | |
# !build/testsuite/openexr-images | |
# !build/testsuite/fits-images | |
# !build/testsuite/j2kp4files_v1_5 | |
ubuntu: | |
if: 0 | |
name: "Ubuntu ${{matrix.desc}}" | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- desc: latest releases gcc13 C++20 py3.12 avx2 exr3.3 ocio2.4 | |
nametag: linux-latest-releases | |
runner: ubuntu-24.04 | |
cc_compiler: gcc-13 | |
cxx_compiler: g++-13 | |
cxx_std: 20 | |
fmt_ver: 11.0.2 | |
opencolorio_ver: v2.4.0 | |
openexr_ver: v3.3.0 | |
pybind11_ver: v2.13.5 | |
python_ver: "3.12" | |
simd: avx2,f16c | |
setenvs: export LIBJPEGTURBO_VERSION=3.0.3 | |
LIBRAW_VERSION=0.21.2 | |
LIBTIFF_VERSION=v4.7.0 | |
OPENJPEG_VERSION=v2.5.2 | |
PTEX_VERSION=v2.4.3 | |
PUGIXML_VERSION=v1.14 | |
WEBP_VERSION=v1.4.0 | |
FREETYPE_VERSION=VER-2-13-3 | |
USE_OPENVDB=0 | |
- desc: bleeding edge gcc14 C++20 py3.12 OCIO/libtiff/exr-main avx2 | |
nametag: linux-bleeding-edge | |
runner: ubuntu-24.04 | |
cc_compiler: gcc-14 | |
cxx_compiler: g++-14 | |
cxx_std: 20 | |
fmt_ver: master | |
opencolorio_ver: main | |
openexr_ver: main | |
pybind11_ver: master | |
python_ver: "3.12" | |
simd: avx2,f16c | |
setenvs: export LIBJPEGTURBO_VERSION=main | |
LIBRAW_VERSION=master | |
LIBTIFF_VERSION=master | |
OPENJPEG_VERSION=master | |
PTEX_VERSION=main | |
PUGIXML_VERSION=master | |
WEBP_VERSION=main | |
OIIO_CMAKE_FLAGS="-DFORTIFY_SOURCE=2" | |
EXTRA_DEP_PACKAGES="python3.12-dev python3-numpy" | |
USE_OPENVDB=0 | |
SKIP_APT_GET_UPDATE=1 | |
FREETYPE_VERSION=master | |
QT_VERSION=0 INSTALL_OPENCV=0 | |
# The installed OpenVDB has a TLS conflict with Python 3.8 | |
# Disabling the `apt-get update` in gh-installdeps.bash | |
# addresses a job killing problem in the GHA Ubuntu | |
# 24.04 runners that cropped up circa May 29 2024. Maybe | |
# it will be fixed and we can do the update again later? | |
- desc: all local builds gcc12 C++17 avx2 exr3.2 ocio2.3 | |
nametag: linux-local-builds | |
runner: ubuntu-22.04 | |
cc_compiler: gcc-12 | |
cxx_compiler: g++-12 | |
cxx_std: 17 | |
python_ver: "3.10" | |
simd: avx2,f16c | |
setenvs: export OpenImageIO_BUILD_LOCAL_DEPS=all | |
LIBJPEGTURBO_VERSION=3.0.4 | |
LIBRAW_VERSION=0.21.3 | |
OPENJPEG_VERSION=v2.4.0 | |
PTEX_VERSION=v2.4.2 | |
PUGIXML_VERSION=v1.14 | |
WEBP_VERSION=v1.4.0 | |
- desc: clang14 C++20 avx2 exr3.1 ocio2.1 | |
nametag: linux-clang14 | |
runner: ubuntu-20.04 | |
cxx_compiler: clang++ | |
cc_compiler: clang | |
cxx_std: 20 | |
fmt_ver: 10.1.1 | |
opencolorio_ver: v2.2.1 | |
openexr_ver: v3.1.13 | |
pybind11_ver: v2.12.0 | |
python_ver: 3.8 | |
simd: avx2,f16c | |
setenvs: export LLVM_VERSION=14.0.0 | |
USE_OPENVDB=0 | |
# The installed OpenVDB has a TLS conflict with Python 3.8 | |
- desc: debug gcc9/C++17, sse4.2, exr3.1 | |
nametag: linux-gcc9-cpp17-debug | |
runner: ubuntu-20.04 | |
cxx_compiler: g++-9 | |
cxx_std: 17 | |
python_ver: 3.8 | |
simd: sse4.2 | |
openexr_ver: v3.1.13 | |
pybind11_ver: v2.7.0 | |
setenvs: export CMAKE_BUILD_TYPE=Debug | |
PUGIXML_VERSION=v1.9 | |
CTEST_TEST_TIMEOUT=1200 | |
- desc: static libs gcc9 C++17 exr2.4 | |
nametag: linux-static | |
runner: ubuntu-20.04 | |
cxx_compiler: g++-9 | |
cxx_std: 17 | |
openexr_ver: v3.1.13 | |
python_ver: 3.8 | |
pybind11_ver: v2.7.0 | |
setenvs: export BUILD_SHARED_LIBS=OFF | |
depcmds: | | |
sudo rm -rf /usr/local/include/OpenEXR | |
sudo rm -rf /usr/local/lib64/cmake/{IlmBase,OpenEXR} | |
# Test formatting. This test entry doesn't do a full build, it | |
# just runs clang-format on everything, and passes if nothing is | |
# misformatted. Upon failure, the build artifact will be the full | |
# source code with the formatting fixed (diffs will also appear in | |
# the console output). | |
- desc: "clang-format" | |
nametag: clang-format | |
runner: ubuntu-latest | |
cxx_std: 17 | |
extra_artifacts: "src/*.*" | |
openexr_ver: v3.1.13 | |
python_ver: "3.10" | |
skip_tests: 1 | |
setenvs: export BUILDTARGET=clang-format | |
OIIO_CMAKE_FLAGS=-DUSE_PYTHON=0 | |
LLVM_VERSION=17.0.6 LLVM_DISTRO_NAME=ubuntu-22.04 | |
SKIP_SYSTEM_DEPS_INSTALL=1 QT_VERSION=0 | |
xOpenImageIO_BUILD_MISSING_DEPS=missing | |
OpenImageIO_OPTIONAL_DEPS=ALL | |
runs-on: ${{ matrix.runner }} | |
env: | |
CXX: ${{matrix.cxx_compiler}} | |
CC: ${{matrix.cc_compiler}} | |
CMAKE_CXX_STANDARD: ${{matrix.cxx_std}} | |
USE_SIMD: ${{matrix.simd}} | |
FMT_VERSION: ${{matrix.fmt_ver}} | |
OPENCOLORIO_VERSION: ${{matrix.opencolorio_ver}} | |
OPENEXR_VERSION: ${{matrix.openexr_ver}} | |
PYBIND11_VERSION: ${{matrix.pybind11_ver}} | |
PYTHON_VERSION: ${{matrix.python_ver}} | |
steps: | |
# 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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
- name: Prepare ccache timestamp | |
id: ccache_cache_keys | |
run: echo "date=`date -u +'%Y-%m-%dT%H:%M:%SZ'`" >> $GITHUB_OUTPUT | |
- name: ccache | |
id: ccache | |
uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 | |
with: | |
path: /tmp/ccache | |
key: ${{github.job}}-${{matrix.nametag}}-${{ steps.ccache_cache_keys.outputs.date }} | |
restore-keys: ${{github.job}}- | |
save-always: true | |
- name: Build setup | |
run: | | |
${{matrix.setenvs}} | |
src/build-scripts/ci-startup.bash | |
- name: Dependencies | |
run: | | |
${{matrix.depcmds}} | |
src/build-scripts/gh-installdeps.bash | |
- name: Build | |
run: src/build-scripts/ci-build.bash | |
- name: Testsuite | |
if: matrix.skip_tests != '1' | |
run: src/build-scripts/ci-test.bash | |
- uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 | |
if: failure() | |
with: | |
name: oiio-${{github.job}}-${{matrix.nametag}} | |
path: | | |
build/cmake-save | |
build/testsuite/*/*.* | |
${{ matrix.extra_artifacts }} | |
!build/testsuite/oiio-images | |
!build/testsuite/openexr-images | |
!build/testsuite/fits-images | |
!build/testsuite/j2kp4files_v1_5 | |
macos: | |
if: 0 | |
name: "${{matrix.runner}} appleclang${{matrix.aclang}}/C++${{matrix.cxx_std}} py${{matrix.python_ver}} ${{matrix.desc}}" | |
uses: ./.github/workflows/ci-steps.yml | |
with: | |
runner: ${{ matrix.runner || 'macos-latest' }} | |
container: ${{ matrix.container }} | |
cc_compiler: ${{ matrix.cc_compiler || 'clang' }} | |
cxx_compiler: ${{ matrix.cxx_compiler || 'clang++' }} | |
cxx_std: ${{ matrix.cxx_std || '20' }} | |
depcmds: ${{ matrix.depcmds }} | |
extra_artifacts: ${{ matrix.extra_artifacts }} | |
fmt_ver: ${{ matrix.fmt_ver }} | |
opencolorio_ver: ${{ matrix.opencolorio_ver }} | |
openexr_ver: ${{ matrix.openexr_ver }} | |
pybind11_ver: ${{ matrix.pybind11_ver }} | |
python_ver: ${{ matrix.python_ver }} | |
setenvs: ${{ matrix.setenvs }} | |
simd: ${{ matrix.simd }} | |
skip_tests: ${{ matrix.skip_tests }} | |
abi_check: ${{ matrix.abi_check }} | |
build_docs: ${{ matrix.build_docs }} | |
generator: ${{ matrix.generator }} | |
ctest_args: ${{ matrix.ctest_args }} | |
ctest_test_timeout: ${{ matrix.ctest_test_timeout || '800' }} | |
nametag: ${{ matrix.nametag || 'unnamed!' }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- desc: MacOS-13-Intel aclang14/C++17/py3.11 | |
runner: macos-13 | |
nametag: macos13-py311 | |
cc_compiler: clang | |
cxx_compiler: clang++ | |
cxx_std: 17 | |
python_ver: "3.11" | |
simd: sse4.2,avx2 | |
ctest_test_timeout: 800 | |
setenvs: export MACOSX_DEPLOYMENT_TARGET=12.0 | |
- desc: MacOS-14-ARM aclang15/C++20/py3.12 | |
runner: macos-14 | |
nametag: macos14-arm-py312 | |
cc_compiler: clang | |
cxx_compiler: clang++ | |
cxx_std: 20 | |
python_ver: "3.12" | |
ctest_test_timeout: 800 | |
- desc: MacOS-15-ARM aclang16/C++20/py3.13 | |
runner: macos-15 | |
nametag: macos15-arm-py313 | |
cc_compiler: clang | |
cxx_compiler: clang++ | |
cxx_std: 20 | |
python_ver: "3.13" | |
ctest_test_timeout: 800 | |
# runs-on: ${{ matrix.runner }} | |
# env: | |
# CXX: ${{matrix.cxx_compiler}} | |
# CC: ${{matrix.cc_compiler}} | |
# CMAKE_CXX_STANDARD: ${{ matrix.cxx_std }} | |
# PYTHON_VERSION: ${{ matrix.python_ver }} | |
# USE_SIMD: ${{matrix.simd}} | |
# CTEST_TEST_TIMEOUT: 800 | |
# steps: | |
# - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
# - name: Prepare ccache timestamp | |
# id: ccache_cache_keys | |
# run: echo "date=`date -u +'%Y-%m-%dT%H:%M:%SZ'`" >> $GITHUB_OUTPUT | |
# - name: ccache | |
# id: ccache | |
# uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 | |
# with: | |
# path: /Users/runner/.ccache | |
# key: ${{github.job}}-${{matrix.nametag}}-${{ steps.ccache_cache_keys.outputs.date }} | |
# restore-keys: ${{github.job}}- | |
# save-always: true | |
# - name: Build setup | |
# run: | | |
# ${{matrix.setenvs}} | |
# src/build-scripts/ci-startup.bash | |
# - name: Dependencies | |
# run: | | |
# src/build-scripts/install_homebrew_deps.bash | |
# ${{matrix.depcmds}} | |
# - name: Build | |
# run: | | |
# export PYTHONPATH=/usr/local/lib/python${PYTHON_VERSION}/site-packages:$PYTHONPATH | |
# src/build-scripts/ci-build.bash | |
# - name: Testsuite | |
# run: src/build-scripts/ci-test.bash | |
# - uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 | |
# if: failure() | |
# with: | |
# name: oiio-${{github.job}}-${{matrix.nametag}} | |
# path: | | |
# build/cmake-save | |
# build/testsuite/*/*.* | |
# !build/testsuite/oiio-images | |
# !build/testsuite/openexr-images | |
# !build/testsuite/fits-images | |
# !build/testsuite/j2kp4files_v1_5 | |
windows: | |
# if: 0 | |
name: "${{matrix.desc}} VS${{matrix.vsver}}" | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- desc: windows-2019 VS2019 | |
runner: windows-2019 | |
vsver: 2019 | |
generator: "Visual Studio 16 2019" | |
# openexr_ver: v3.2.4 | |
python_ver: 3.7 | |
# simd: sse4.2 | |
- desc: windows-2022 VS2022 | |
runner: windows-2022 | |
vsver: 2022 | |
generator: "Visual Studio 17 2022" | |
# openexr_ver: v3.2.4 | |
python_ver: "3.9" | |
# simd: sse4.2 | |
# setenvs: export OpenImageIO_BUILD_MISSING_DEPS=none | |
runs-on: ${{ matrix.runner }} | |
env: | |
PYTHON_VERSION: ${{matrix.python_ver}} | |
CMAKE_GENERATOR: ${{matrix.generator}} | |
OPENEXR_VERSION: ${{matrix.openexr_ver}} | |
USE_SIMD: ${{matrix.simd}} | |
CTEST_ARGS: "--timeout 180 --repeat after-timeout:6" | |
steps: | |
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
- name: Setup Nuget.exe | |
if: runner.os == 'Windows' | |
uses: nuget/setup-nuget@a21f25cd3998bf370fde17e3f1b4c12c175172f9 # v2.0.0 | |
- name: Build setup | |
shell: bash | |
run: | | |
${{matrix.setenvs}} | |
src/build-scripts/ci-startup.bash | |
- name: Dependencies | |
shell: bash | |
run: src/build-scripts/gh-win-installdeps.bash | |
- name: Build | |
shell: bash | |
run: src/build-scripts/ci-build.bash | |
- name: Testsuite | |
shell: bash | |
run: src/build-scripts/ci-test.bash | |
- uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 | |
if: failure() | |
with: | |
name: oiio-${{github.job}}-VS${{matrix.vsver}} | |
path: | | |
build/cmake-save | |
build/testsuite/*/*.* | |
build/deps/dist/*/*.cmake | |
!build/testsuite/oiio-images | |
!build/testsuite/openexr-images | |
!build/testsuite/fits-images | |
!build/testsuite/j2kp4files_v1_5 |