Skip to content

Commit 144143d

Browse files
authored
ci: update container versions, move 3 variants from 2022 to Ubuntu (#5119)
TL;DR: * Bump ASWF containers to the latest versions for their years. * Move the "oldest" and "hobbled" tests off the 2022 containers entirely, do as close as possible to equivalent on Unbuntu. Detailed explanation follows: First of all, bump to the latest ASWF docker containers for each year. We had been locking down, but hadn't bumped to the latest for a while. (Exception: leave the sanitizer test where it is -- the newer containers have additional checks that are catching UB that I am tracking down separately.) Also, we are trying to reduce the surface area of the CentOS 7-based 2022 aswf-docker containers, which are getting long in the tooth, cannot upgrade to the latest "actions" (because of a tricky interplay between runner configuration, node version the actions require, and glibc on the old containers), and may have a limited time that they will continue working. In most film studios, CentOS is long gone or taking its last breaths, so being able to support and test on 2022 era dependencies and OS distros is of dwindling relevance. We do, however, want to keep testing versus the oldest supported versions we can muster for many major dependencies. So to this end, this PR also does the following: * Move three tests from running in the 2022 containers to just running on bare Ubutu and by hook or by crook using the right dependencies: - the "oldest" versions we claim to support for as much of the toolchain toolchain and dependencies as is easily achievable, built with gcc - and the same, built with clang - the "hobbled" test, which is similar to the "oldest" test but with as many of the optional dependencies missing or disabled, to make sure we really do build with only required dependencies (this also is the test build for no SIMD use) * Keep two last tests running on 2022 containers, these are only for the purpose of testing "pure" CentOS VFX Platform 2022 compliance for just a bit longer. * A few minor related touch-ups necessary to force some older dependencies on the bare Ubuntu runner. --------- Signed-off-by: Larry Gritz <lg@larrygritz.com>
1 parent b7580f4 commit 144143d

File tree

7 files changed

+160
-87
lines changed

7 files changed

+160
-87
lines changed

.github/workflows/build-steps.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,18 @@ on:
3737
type: string
3838
fmt_commit:
3939
type: string
40+
gcc_action_ver:
41+
type: string
42+
llvm_action_ver:
43+
type: string
4044
opencolorio_ver:
4145
type: string
4246
openexr_ver:
4347
type: string
4448
pybind11_ver:
4549
type: string
50+
python_action_ver:
51+
type: string
4652
python_ver:
4753
type: string
4854
setenvs:
@@ -80,6 +86,8 @@ on:
8086
type: string
8187
optional_deps:
8288
type: string
89+
build_local_deps:
90+
type: string
8391
secrets:
8492
PASSED_GITHUB_TOKEN:
8593
required: false
@@ -125,6 +133,7 @@ jobs:
125133
# against and testing an optional dependency, but in fact are not.
126134
OpenImageIO_REQUIRED_DEPS: ${{inputs.required_deps}}
127135
OpenImageIO_OPTIONAL_DEPS: ${{inputs.optional_deps}}
136+
OpenImageIO_BUILD_LOCAL_DEPS: ${{inputs.build_local_deps}}
128137
SETENVS: ${{inputs.setenvs}}
129138
DEPCMDS: ${{inputs.depcmds}}
130139

@@ -167,6 +176,22 @@ jobs:
167176
# path: ./ccache
168177
key: ${{inputs.nametag}}-${{steps.ccache_cache_keys.outputs.date}}
169178
restore-keys: ${{inputs.nametag}}
179+
- name: Install gcc
180+
if: inputs.gcc_action_ver != ''
181+
run: |
182+
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
183+
sudo apt-get update -y
184+
sudo apt-get install -y g++-${{inputs.gcc_action_ver}}
185+
- name: Install python
186+
if: inputs.python_action_ver != ''
187+
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
188+
with:
189+
python-version: ${{ inputs.python_action_ver }}
190+
- name: Install LLVM and Clang
191+
if: inputs.llvm_action_ver != ''
192+
uses: KyleMayes/install-llvm-action@ebc0426251bc40c7cd31162802432c68818ab8f0 # v2.0.9
193+
with:
194+
version: ${{ inputs.llvm_action_ver }}
170195
- name: Dependencies
171196
shell: bash
172197
run: |

.github/workflows/ci.yml

Lines changed: 117 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ jobs:
7979
# only the ones we are intentionally not testing for those jobs.
8080
required_deps: ${{ matrix.required_deps || 'all' }}
8181
optional_deps: ${{ matrix.optional_deps || 'DCMTK;JXL;Libheif;Nuke;OpenCV;openjph;OpenVDB;Qt5;R3DSDK;'}}${{matrix.optional_deps_append}}
82+
build_local_deps: ${{ matrix.build_local_deps }}
8283
strategy:
8384
fail-fast: false
8485
matrix:
@@ -119,78 +120,6 @@ jobs:
119120
setenvs: export FREETYPE_VERSION=VER-2-12-0
120121
BUILD_PNG_VERSION=1.6.30
121122
optional_deps_append: 'FFmpeg;LibRaw;Ptex;Qt6'
122-
- desc: oldest gcc9.3/C++17 py3.9 exr3.1 ocio2.3
123-
# Oldest gcc and versions of the dependencies that we support.
124-
nametag: linux-oldest
125-
runner: ubuntu-latest
126-
container: aswf/ci-osl:2022
127-
vfxyear: 2022
128-
old_node: 1
129-
cxx_std: 17
130-
fmt_ver: 9.0.0
131-
fmt_commit: c4ee726532178e556d923372f29163bd206d7732
132-
opencolorio_ver: v2.3.0
133-
openexr_ver: v3.1.0
134-
pybind11_ver: v2.7.0
135-
python_ver: 3.9
136-
setenvs: export CMAKE_VERSION=3.18.2
137-
PTEX_VERSION=v2.3.2
138-
WEBP_VERSION=v1.1.0
139-
PUGIXML_VERSION=v1.8
140-
BUILD_PNG_VERSION=1.6.0
141-
depcmds: sudo rm -rf /usr/local/include/OpenEXR
142-
optional_deps_append: 'FFmpeg;LibRaw;Ptex;Qt6'
143-
- desc: oldest clang10/C++17 py3.9 exr3.1 ocio2.3
144-
# Oldest clang and versions of the dependencies that we support.
145-
nametag: linux-oldest-clang
146-
runner: ubuntu-latest
147-
container: aswf/ci-osl:2022-clang10
148-
vfxyear: 2021
149-
old_node: 1
150-
cc_compiler: clang
151-
cxx_compiler: clang++
152-
cxx_std: 17
153-
fmt_ver: 9.0.0
154-
fmt_commit: c4ee726532178e556d923372f29163bd206d7732
155-
opencolorio_ver: v2.3.0
156-
openexr_ver: v3.1.0
157-
pybind11_ver: v2.7.0
158-
python_ver: 3.9
159-
setenvs: export CMAKE_VERSION=3.18.2
160-
PTEX_VERSION=v2.3.2
161-
WEBP_VERSION=v1.1.0
162-
PUGIXML_VERSION=v1.8
163-
BUILD_PNG_VERSION=1.6.0
164-
depcmds: sudo rm -rf /usr/local/include/OpenEXR
165-
optional_deps_append: 'FFmpeg;LibRaw;Ptex;Qt6'
166-
- desc: hobbled gcc9.3/C++17 py3.9 exr-3.1 no-sse
167-
# Use the oldest supported versions of required dependencies, and
168-
# disable most optional dependencies and features (no SSE or
169-
# OpenCV, don't embed plugins).
170-
nametag: linux-disabled
171-
runner: ubuntu-latest
172-
container: aswf/ci-osl:2022
173-
vfxyear: 2022
174-
old_node: 1
175-
cxx_std: 17
176-
fmt_ver: 9.0.0
177-
fmt_commit: c4ee726532178e556d923372f29163bd206d7732
178-
opencolorio_ver: v2.3.0
179-
openexr_ver: v3.1.0
180-
pybind11_ver: v2.7.0
181-
python_ver: 3.9
182-
simd: 0
183-
setenvs: export EMBEDPLUGINS=0
184-
CMAKE_VERSION=3.18.2
185-
PTEX_VERSION=v2.3.2
186-
WEBP_VERSION=v1.1.0
187-
USE_JPEGTURBO=0
188-
USE_OPENCV=0
189-
FREETYPE_VERSION=VER-2-10-0
190-
PUGIXML_VERSION=v1.8
191-
BUILD_PNG_VERSION=1.6.0
192-
depcmds: sudo rm -rf /usr/local/include/OpenEXR
193-
required_deps: none
194123

195124

196125
#
@@ -234,6 +163,7 @@ jobs:
234163
# only the ones we are intentionally not testing for those jobs.
235164
required_deps: ${{ matrix.required_deps || 'all' }}
236165
optional_deps: ${{ matrix.optional_deps || 'DCMTK;FFmpeg;JXL;Libheif;Nuke;OpenCV;openjph;OpenVDB;Qt5;R3DSDK;'}}${{matrix.optional_deps_append}}
166+
build_local_deps: ${{ matrix.build_local_deps }}
237167
strategy:
238168
fail-fast: false
239169
matrix:
@@ -253,7 +183,7 @@ jobs:
253183
- desc: VFX2024 gcc11/C++17 py3.11 exr3.2 ocio2.3
254184
nametag: linux-vfx2024
255185
runner: ubuntu-latest
256-
container: aswf/ci-oiio:2024.2
186+
container: aswf/ci-oiio:2024.6
257187
opencolorio_ver: v2.3.2
258188
python_ver: "3.11"
259189
simd: "avx2,f16c"
@@ -265,7 +195,7 @@ jobs:
265195
- desc: VFX2024 clang/C++17 py3.11 exr3.2 ocio2.3
266196
nametag: linux-vfx2024.clang
267197
runner: ubuntu-latest
268-
container: aswf/ci-oiio:2024.2
198+
container: aswf/ci-oiio:2024.6
269199
cc_compiler: clang
270200
cxx_compiler: clang++
271201
opencolorio_ver: v2.3.2
@@ -279,7 +209,7 @@ jobs:
279209
- desc: VFX2025 gcc11/C++17 py3.11 exr3.3 ocio2.4
280210
nametag: linux-vfx2025
281211
runner: ubuntu-latest
282-
container: aswf/ci-oiio:2025
212+
container: aswf/ci-oiio:2025.5
283213
cxx_std: 17
284214
python_ver: "3.11"
285215
simd: "avx2,f16c"
@@ -292,7 +222,7 @@ jobs:
292222
- desc: VFX2025 Debug gcc11/C++17 py3.11 exr3.3 ocio2.4
293223
nametag: linux-vfx2025-debug
294224
runner: ubuntu-latest
295-
container: aswf/ci-oiio:2025
225+
container: aswf/ci-oiio:2025.5
296226
cxx_std: 17
297227
build_type: Debug
298228
ctest_test_timeout: "240"
@@ -306,7 +236,7 @@ jobs:
306236
# - desc: VFX2025 Static gcc11/C++17 py3.11 exr3.3 ocio2.4
307237
# nametag: linux-vfx2025-static
308238
# runner: ubuntu-latest
309-
# container: aswf/ci-oiio:2025
239+
# container: aswf/ci-oiio:2025.5
310240
# cxx_std: 17
311241
# python_ver: "3.11"
312242
# simd: "avx2,f16c"
@@ -319,7 +249,7 @@ jobs:
319249
- desc: VFX2025 icx/C++17 py3.11 exr3.3 ocio2.4 qt5.15
320250
nametag: linux-vfx2025.icx
321251
runner: ubuntu-latest
322-
container: aswf/ci-oiio:2025
252+
container: aswf/ci-oiio:2025.5
323253
cc_compiler: icx
324254
cxx_compiler: icpx
325255
fmt_ver: 11.2.0
@@ -333,10 +263,10 @@ jobs:
333263
UHDR_CMAKE_CXX_COMPILER=g++
334264
# Building libuhdr with icx results in test failures
335265
optional_deps_append: "LibRaw;Ptex;openjph;Qt6"
336-
- desc: VFX2026 gcc14/C++20 py3.13 exr3.4 ocio2.4
266+
- desc: VFX2026 gcc14/C++20 py3.13 exr3.4 ocio2.5
337267
nametag: linux-vfx2026
338268
runner: ubuntu-latest
339-
container: aswf/ci-oiio:2026
269+
container: aswf/ci-oiio:2026.3
340270
cxx_std: 20
341271
python_ver: "3.13"
342272
simd: "avx2,f16c"
@@ -366,7 +296,7 @@ jobs:
366296
- desc: ABI check
367297
nametag: abi-check
368298
runner: ubuntu-latest
369-
container: aswf/ci-oiio:2025
299+
container: aswf/ci-oiio:2025.5
370300
build_type: RelWithDebInfo
371301
fmt_ver: 11.1.4
372302
fmt_commit: 123913715afeb8a437e6388b4473fcc4753e1c9a
@@ -417,10 +347,14 @@ jobs:
417347
ctest_test_timeout: ${{ matrix.ctest_test_timeout }}
418348
coverage: ${{ matrix.coverage || 0 }}
419349
sonar: ${{ matrix.sonar || 0 }}
350+
gcc_action_ver: ${{ matrix.gcc_action_ver }}
351+
llvm_action_ver: ${{ matrix.llvm_action_ver }}
352+
python_action_ver: ${{ matrix.python_action_ver }}
420353
# Override required_deps to be 'all' and explicitly list as optional
421354
# only the ones we are intentionally not testing for those jobs.
422355
required_deps: ${{ matrix.required_deps || 'all' }}
423356
optional_deps: ${{ matrix.optional_deps || 'CUDAToolkit;DCMTK;JXL;Nuke;OpenGL;openjph;OpenVDB;Ptex;pystring;Qt5;R3DSDK;' }}${{matrix.optional_deps_append}}
357+
build_local_deps: ${{ matrix.build_local_deps }}
424358
strategy:
425359
fail-fast: false
426360
matrix:
@@ -511,8 +445,8 @@ jobs:
511445
cxx_std: 17
512446
python_ver: "3.10"
513447
simd: avx2,f16c
514-
setenvs: export OpenImageIO_BUILD_LOCAL_DEPS=all
515-
OpenImageIO_DEPENDENCY_BUILD_VERBOSE=ON
448+
build_local_deps: all
449+
setenvs: export OpenImageIO_DEPENDENCY_BUILD_VERBOSE=ON
516450
LIBRAW_VERSION=0.22.0
517451
PTEX_VERSION=v2.4.2
518452
PUGIXML_VERSION=v1.14
@@ -577,6 +511,104 @@ jobs:
577511
FREETYPE_VERSION=VER-2-14-1
578512
USE_OPENVDB=0
579513

514+
- desc: oldest gcc9/C++17 py3.9 exr3.1 ocio2.3
515+
# Oldest gcc and versions of the dependencies that we support.
516+
nametag: linux-oldest-ubuntu
517+
runner: ubuntu-22.04
518+
cc_compiler: gcc-9
519+
cxx_compiler: g++-9
520+
cxx_std: 17
521+
fmt_ver: 9.0.0
522+
fmt_commit: c4ee726532178e556d923372f29163bd206d7732
523+
opencolorio_ver: v2.3.0
524+
openexr_ver: v3.1.0
525+
pybind11_ver: v2.7.0
526+
python_ver: "3.9"
527+
python_action_ver: "3.9"
528+
gcc_action_ver: 9
529+
setenvs: export CMAKE_VERSION=3.18.2
530+
PTEX_VERSION=v2.3.2
531+
WEBP_VERSION=v1.1.0
532+
PUGIXML_VERSION=v1.8
533+
BUILD_PNG_VERSION=1.6.0
534+
PIP_SUFFIX=.9
535+
PIP_INSTALLS=numpy
536+
Robinmap_BUILD_VERSION=1.2.0
537+
Robinmap_GIT_COMMIT=68ff7325b3898fca267a103bad5c509e8861144d
538+
TIFF_BUILD_VERSION=4.0.0
539+
TIFF_GIT_COMMIT=f7b79dc7dc86ccbaabe9882e2b9ffa5ee8dac917
540+
# OpenJPEG_BUILD_VERSION=2.2.0
541+
# OpenJPEG_GIT_COMMIT=3d7cde5fc9fbc5618d02160900d32e02ed12a00e
542+
optional_deps_append: 'FFmpeg;LibRaw;Ptex;Qt6'
543+
build_local_deps: 'TIFF'
544+
- desc: oldest clang11/C++17 py3.9 exr3.1 ocio2.3
545+
# Oldest clang and versions of the dependencies that we support.
546+
nametag: linux-oldest-clang-ubuntu
547+
runner: ubuntu-22.04
548+
cxx_std: 17
549+
fmt_ver: 9.0.0
550+
fmt_commit: c4ee726532178e556d923372f29163bd206d7732
551+
opencolorio_ver: v2.3.0
552+
openexr_ver: v3.1.0
553+
pybind11_ver: v2.7.0
554+
python_ver: "3.9"
555+
python_action_ver: "3.9"
556+
llvm_action_ver: "11"
557+
setenvs: export CMAKE_VERSION=3.18.2
558+
PTEX_VERSION=v2.3.2
559+
WEBP_VERSION=v1.1.0
560+
PUGIXML_VERSION=v1.8
561+
BUILD_PNG_VERSION=1.6.0
562+
PIP_SUFFIX=.9
563+
PIP_INSTALLS=numpy
564+
OIIO_CC=clang
565+
OIIO_CXX=clang++
566+
Robinmap_BUILD_VERSION=1.2.0
567+
Robinmap_GIT_COMMIT=68ff7325b3898fca267a103bad5c509e8861144d
568+
TIFF_BUILD_VERSION=4.0.0
569+
TIFF_GIT_COMMIT=f7b79dc7dc86ccbaabe9882e2b9ffa5ee8dac917
570+
# OpenJPEG_BUILD_VERSION=2.2.0
571+
# OpenJPEG_GIT_COMMIT=3d7cde5fc9fbc5618d02160900d32e02ed12a00e
572+
optional_deps_append: 'FFmpeg;LibRaw;Ptex;Qt6'
573+
build_local_deps: 'TIFF'
574+
575+
- desc: hobbled gcc9/C++17 py3.9 exr-3.1 no-sse
576+
# Use the oldest supported versions of required dependencies, and
577+
# disable most optional dependencies and features (no SSE or
578+
# OpenCV, don't embed plugins).
579+
nametag: linux-disabled-ubuntu
580+
runner: ubuntu-22.04
581+
cc_compiler: gcc-9
582+
cxx_compiler: g++-9
583+
cxx_std: 17
584+
fmt_ver: 9.0.0
585+
fmt_commit: c4ee726532178e556d923372f29163bd206d7732
586+
opencolorio_ver: v2.3.0
587+
openexr_ver: v3.1.0
588+
pybind11_ver: v2.7.0
589+
python_ver: "3.9"
590+
python_action_ver: "3.9"
591+
gcc_action_ver: 9
592+
simd: 0
593+
setenvs: export EMBEDPLUGINS=0
594+
CMAKE_VERSION=3.18.2
595+
PTEX_VERSION=v2.3.2
596+
WEBP_VERSION=v1.1.0
597+
USE_JPEGTURBO=0
598+
USE_OPENCV=0
599+
USE_LIBUHDR=0
600+
FREETYPE_VERSION=VER-2-10-0
601+
PUGIXML_VERSION=v1.8
602+
BUILD_PNG_VERSION=1.6.0
603+
PIP_SUFFIX=.9
604+
PIP_INSTALLS=numpy
605+
Robinmap_BUILD_VERSION=1.2.0
606+
Robinmap_GIT_COMMIT=68ff7325b3898fca267a103bad5c509e8861144d
607+
TIFF_BUILD_VERSION=4.0.0
608+
TIFF_GIT_COMMIT=f7b79dc7dc86ccbaabe9882e2b9ffa5ee8dac917
609+
required_deps: none
610+
build_local_deps: 'TIFF'
611+
580612

581613
#
582614
# MacOS Tests
@@ -618,6 +650,7 @@ jobs:
618650
# test in GHA CI.
619651
required_deps: ${{ matrix.required_deps || 'all' }}
620652
optional_deps: ${{ matrix.optional_deps || 'Nuke;R3DSDK;' }}${{matrix.optional_deps_append}}
653+
build_local_deps: ${{ matrix.build_local_deps }}
621654
strategy:
622655
fail-fast: false
623656
matrix:
@@ -700,6 +733,7 @@ jobs:
700733
# of exceptions in the future.
701734
required_deps: ${{ matrix.required_deps || 'all' }}
702735
optional_deps: ${{ matrix.optional_deps || 'BZip2;CUDAToolkit;DCMTK;FFmpeg;GIF;JXL;Libheif;LibRaw;Nuke;OpenCV;OpenGL;OpenJPEG;openjph;OpenCV;OpenVDB;Ptex;pystring;Qt5;Qt6;TBB;R3DSDK;${{matrix.optional_deps_append}}' }}
736+
build_local_deps: ${{ matrix.build_local_deps }}
703737
strategy:
704738
fail-fast: false
705739
matrix:

src/build-scripts/ci-build.bash

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,13 @@ export OIIO_SRC_DIR=${OIIO_SRC_DIR:=$PWD}
1313
export OIIO_BUILD_DIR=${OIIO_BUILD_DIR:=${OIIO_SRC_DIR}/build}
1414
export OIIO_INSTALL_DIR=${OIIO_INSTALL_DIR:=${OIIO_SRC_DIR}/dist}
1515
export OIIO_CMAKE_BUILD_TYPE=${OIIO_CMAKE_BUILD_TYPE:=${CMAKE_BUILD_TYPE:=Release}}
16+
# Allow OIIO_specific overrides for CC, CXX
17+
if [[ "$OIIO_CC" != "" ]] ; then
18+
CC=$OIIO_CC
19+
fi
20+
if [[ "$OIIO_CXX" != "" ]] ; then
21+
CXX=$OIIO_CXX
22+
fi
1623

1724
if [[ "$USE_SIMD" != "" ]] ; then
1825
OIIO_CMAKE_FLAGS="$OIIO_CMAKE_FLAGS -DUSE_SIMD=$USE_SIMD"

0 commit comments

Comments
 (0)