Skip to content

shell

shell #8987

Workflow file for this run

# 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