4343 aswf-old :
4444 if : ${{ ! contains(github.ref, 'windows-only') && ! contains(github.ref, 'macos-only') }}
4545 name : " (old) ${{matrix.desc}}"
46+ uses : ./.github/workflows/build-steps.yml
47+ with :
48+ nametag : ${{ matrix.nametag || 'unnamed!' }}
49+ runner : ${{ matrix.runner || 'ubuntu-latest' }}
50+ container : ${{ matrix.container }}
51+ container_volumes : ' ["/node20217:/node20217:rw,rshared", "/node20217:/__e/node20:ro,rshared]"]'
52+ cc_compiler : ${{ matrix.cc_compiler }}
53+ cxx_compiler : ${{ matrix.cxx_compiler }}
54+ cxx_std : ${{ matrix.cxx_std || '17' }}
55+ build_type : ${{ matrix.build_type || 'Release' }}
56+ depcmds : ${{ matrix.depcmds }}
57+ extra_artifacts : ${{ matrix.extra_artifacts }}
58+ fmt_ver : ${{ matrix.fmt_ver }}
59+ opencolorio_ver : ${{ matrix.opencolorio_ver }}
60+ openexr_ver : ${{ matrix.openexr_ver }}
61+ pybind11_ver : ${{ matrix.pybind11_ver }}
62+ python_ver : ${{ matrix.python_ver }}
63+ setenvs : ${{ matrix.setenvs }}
64+ simd : ${{ matrix.simd }}
65+ skip_build : ${{ matrix.skip_build }}
66+ skip_tests : ${{ matrix.skip_tests }}
67+ abi_check : ${{ matrix.abi_check }}
68+ benchmark : ${{ matrix.benchmark }}
69+ build_docs : ${{ matrix.build_docs }}
70+ clang_format : ${{ matrix.clang_format }}
71+ generator : ${{ matrix.generator }}
72+ ctest_args : ${{ matrix.ctest_args }}
73+ ctest_test_timeout : ${{ matrix.ctest_test_timeout }}
74+ coverage : ${{ matrix.coverage || 0 }}
75+ sonar : ${{ matrix.sonar || 0 }}
76+ old_node : ${{ matrix.old_node || 0 }}
77+ # Override required_deps to be 'all' and explicitly list as optional
78+ # only the ones we are intentionally not testing for those jobs.
79+ required_deps : ${{ matrix.required_deps || 'all' }}
80+ optional_deps : ${{ matrix.optional_deps || 'DCMTK;JXL;Libheif;Nuke;OpenCV;openjph;OpenVDB;Qt5;R3DSDK;'}}${{matrix.optional_deps_append}}
4681 strategy :
4782 fail-fast : false
4883 matrix :
6297 setenvs : export FREETYPE_VERSION=VER-2-12-0
6398 BUILD_PNG_VERSION=1.6.30
6499 WebP_BUILD_VERSION=1.5.0
100+ optional_deps_append : ' FFmpeg;LibRaw;Ptex;Qt6'
65101 - desc : VP2022 clang13/C++17 py39 avx2 exr3.1 ocio2.3
66102 nametag : linux-vfx2022.clang13
67103 runner : ubuntu-latest
78114 fmt_ver : 9.1.0
79115 setenvs : export FREETYPE_VERSION=VER-2-12-0
80116 BUILD_PNG_VERSION=1.6.30
117+ optional_deps_append : ' FFmpeg;LibRaw;Ptex;Qt6'
81118 - desc : oldest gcc9.3/C++17 py3.9 exr3.1 ocio2.3
82119 # Oldest gcc and versions of the dependencies that we support.
83120 nametag : linux-oldest
97134 PUGIXML_VERSION=v1.8
98135 BUILD_PNG_VERSION=1.6.0
99136 depcmds : sudo rm -rf /usr/local/include/OpenEXR
137+ optional_deps_append : ' FFmpeg;LibRaw;Ptex;Qt6'
100138 - desc : oldest clang10/C++17 py3.9 exr3.1 ocio2.3
101139 # Oldest clang and versions of the dependencies that we support.
102140 nametag : linux-oldest-clang
@@ -118,6 +156,7 @@ jobs:
118156 PUGIXML_VERSION=v1.8
119157 BUILD_PNG_VERSION=1.6.0
120158 depcmds : sudo rm -rf /usr/local/include/OpenEXR
159+ optional_deps_append : ' FFmpeg;LibRaw;Ptex;Qt6'
121160 - desc : hobbled gcc9.3/C++17 py3.9 exr-3.1 no-sse
122161 # Use the oldest supported versions of required dependencies, and
123162 # disable most optional dependencies and features (no SSE or
@@ -144,99 +183,7 @@ jobs:
144183 PUGIXML_VERSION=v1.8
145184 BUILD_PNG_VERSION=1.6.0
146185 depcmds : sudo rm -rf /usr/local/include/OpenEXR
147-
148- runs-on : ${{ matrix.runner }}
149- container :
150- image : ${{ matrix.container }}
151- volumes :
152- - /node20217:/node20217:rw,rshared
153- - /node20217:/__e/node20:ro,rshared
154- env :
155- CXX : ${{matrix.cxx_compiler}}
156- CC : ${{matrix.cc_compiler}}
157- CMAKE_CXX_STANDARD : ${{matrix.cxx_std}}
158- USE_SIMD : ${{matrix.simd}}
159- FMT_VERSION : ${{matrix.fmt_ver}}
160- OPENCOLORIO_VERSION : ${{matrix.opencolorio_ver}}
161- OPENEXR_VERSION : ${{matrix.openexr_ver}}
162- PYBIND11_VERSION : ${{matrix.pybind11_ver}}
163- PYTHON_VERSION : ${{matrix.python_ver}}
164- ABI_CHECK : ${{matrix.abi_check}}
165- steps :
166- # Install nodejs 20 with glibc 2.17, to work around the face that the
167- # GHA runners are insisting on a node version that is too new for the
168- # glibc in the ASWF containers prior to 2023.
169- - name : install nodejs20glibc2.17
170- if : matrix.old_node == '1'
171- run : |
172- 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 -
173- # We would like to use harden-runner, but it flags too many false
174- # positives, every time we download a dependency. We should use it only
175- # on CI runs where we are producing artifacts that users might rely on.
176- # - name: Harden Runner
177- # uses: step-security/harden-runner@248ae51c2e8cc9622ecf50685c8bf7150c6e8813 # v1.4.3
178- # with:
179- # egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
180- - name : Checkout repo
181- uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
182- - name : Build setup
183- run : |
184- ${{matrix.setenvs}}
185- src/build-scripts/ci-startup.bash
186- - name : Prepare ccache timestamp
187- id : ccache_cache_keys
188- shell : bash
189- run : echo "date=`date -u +'%Y-%m-%dT%H:%M:%SZ'`" >> $GITHUB_OUTPUT
190- - name : ccache-restore
191- id : ccache-restore
192- uses : actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
193- with :
194- path : ${{ env.CCACHE_DIR }}
195- # path: ./ccache
196- key : ${{matrix.nametag}}-${{steps.ccache_cache_keys.outputs.date}}
197- restore-keys : ${{matrix.nametag}}
198- - name : Dependencies
199- run : |
200- ${{matrix.depcmds}}
201- src/build-scripts/gh-installdeps.bash
202- - name : Build
203- if : matrix.skip_build != '1'
204- run : src/build-scripts/ci-build.bash
205- - name : ccache-save
206- id : ccache-save
207- uses : actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
208- with :
209- path : ${{ env.CCACHE_DIR }}
210- key : ${{matrix.nametag}}-${{steps.ccache_cache_keys.outputs.date}}
211- - name : Testsuite
212- if : matrix.skip_tests != '1'
213- run : src/build-scripts/ci-test.bash
214- - name : Benchmarks
215- if : matrix.benchmark == '1'
216- shell : bash
217- run : src/build-scripts/ci-benchmark.bash
218- - name : Build Docs
219- if : matrix.build_docs == '1'
220- run : |
221- cd src/doc
222- time make doxygen
223- time make sphinx
224- - name : Upload testsuite debugging artifacts
225- uses : actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0
226- if : ${{ failure() || matrix.build_docs == '1'}}
227- with :
228- name : oiio-${{github.job}}-${{matrix.nametag}}
229- path : |
230- build/cmake-save
231- build/compat_reports
232- build/sphinx
233- build/benchmarks
234- build/testsuite/*/*.*
235- !build/testsuite/oiio-images
236- !build/testsuite/openexr-images
237- !build/testsuite/fits-images
238- !build/testsuite/j2kp4files_v1_5
239-
186+ required_deps : none
240187
241188
242189 #
@@ -250,6 +197,7 @@ jobs:
250197 nametag : ${{ matrix.nametag || 'unnamed!' }}
251198 runner : ${{ matrix.runner || 'ubuntu-latest' }}
252199 container : ${{ matrix.container }}
200+ container_volumes : ${{ matrix.container_volumes || '[]' }}
253201 cc_compiler : ${{ matrix.cc_compiler }}
254202 cxx_compiler : ${{ matrix.cxx_compiler }}
255203 cxx_std : ${{ matrix.cxx_std || '17' }}
0 commit comments