Skip to content

Commit 541e870

Browse files
authored
ci: Fix broken CI for ASWF 2021 and 2022 containers (#1905)
Identical in spirit to the coresponding PR for OpenImageIO. The background here takes some explaining... The ASWF's prepared Docker containers that reproduce a CentOS7-based environment corresponding to VFX Platform 2021 and 2022 years contain a glibc that is too old to run a newer version of "node" -- which GitHub Actions themselves use. The old one is no longer receiving support, and GitHub finally changed the policy that was allowing its GHA runners to still run the old version that worked with those ASWF containers. The new node version that is happy on the GHA runners requires a glibc newer than the one in the containers. So that breaks all our CI runs in 2021 and 2022 VFX Platform configurations. See this thread, if you dare: https://academysoftwarefdn.slack.com/archives/C0169RX7MMK/p1732574400981949 Anyway, Jean-Francois Panisset proposed and tested a fix, which lets us continue working (for now) by downloading an old node implemenation (which is happy with the old glibc) and installing it atop the conainers, so it's this old one that the GH actions will use. It feels like it's all held together by chewing gum and duct tape, but it unbreaks our CI and hopefully it will keep working until all the studios have switched fully to RHEL/Alma/Rocky 9.x and we no longer care about testing on CentOS-7 based containers or supporting the VFX Platform years that are too old to be relevant to the new OS that the studios are using. Signed-off-by: Larry Gritz <[email protected]>
1 parent bcb5adb commit 541e870

File tree

1 file changed

+177
-59
lines changed

1 file changed

+177
-59
lines changed

.github/workflows/ci.yml

Lines changed: 177 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ permissions: read-all
3232

3333
jobs:
3434

35-
aswf:
35+
aswf-old:
3636
name: "VFX${{matrix.vfxyear}} ${{matrix.desc}}"
3737
strategy:
3838
fail-fast: false
@@ -43,6 +43,7 @@ jobs:
4343
runner: ubuntu-latest
4444
container: aswftesting/ci-osl:2021-clang11
4545
vfxyear: 2021
46+
old_node: 1
4647
cxx_std: 17
4748
openexr_ver: v3.1.3
4849
openimageio_ver: v2.4.13.0
@@ -56,6 +57,7 @@ jobs:
5657
runner: ubuntu-latest
5758
container: aswftesting/ci-osl:2022-clang13
5859
vfxyear: 2022
60+
old_node: 1
5961
cxx_std: 17
6062
openimageio_ver: v2.5.17.0
6163
python_ver: 3.9
@@ -67,6 +69,7 @@ jobs:
6769
runner: ubuntu-latest
6870
container: aswftesting/ci-osl:2022-clang12
6971
vfxyear: 2022
72+
old_node: 1
7073
cxx_std: 17
7174
opencolorio_ver: v2.2.1
7275
openimageio_ver: main
@@ -80,54 +83,140 @@ jobs:
8083
runner: ubuntu-latest
8184
container: aswftesting/ci-osl:2022-clang13
8285
vfxyear: 2022
86+
old_node: 1
8387
cxx_std: 17
8488
openimageio_ver: release
8589
python_ver: 3.9
8690
pybind11_ver: v2.9.0
8791
simd: sse2
8892
batched: b4_SSE2
89-
- desc: icc/C++17 llvm14 py3.9 oiio-main avx2
90-
nametag: linux-icc
91-
runner: ubuntu-latest
92-
container: aswftesting/ci-osl:2022-clang14
93-
vfxyear: 2022
94-
cc_compiler: icc
95-
cxx_compiler: icpc
96-
cxx_std: 17
97-
fmt_ver: 7.1.3
98-
opencolorio_ver: v2.3.2
99-
openimageio_ver: v2.5.17.0
100-
# Changes to OIIO's simd.h starting in commit 68666db9 (from PR
101-
# #4187) seem to trigger compiler bugs in icc and generate wrong
102-
# SIMD code. It's probably not worth tracking down for just this
103-
# obsolete compiler. Just lock down to OIIO 2.5 for icc builds to
104-
# avoid the problem.
105-
# openimageio_ver: e41ac03c0b21 # works
106-
# openimageio_ver: 68666db994d5 # broken
107-
python_ver: 3.9
108-
pybind11_ver: v2.9.0
109-
# simd: avx2,f16c
110-
batched: b8_AVX2_noFMA
111-
setenvs: export OSL_CMAKE_FLAGS="-DSTOP_ON_WARNING=OFF -DEXTRA_CPP_ARGS=-fp-model=consistent"
112-
OPENIMAGEIO_CMAKE_FLAGS=-DBUILD_FMT_VERSION=7.1.3
113-
USE_OPENVDB=0 OPENCOLORIO_CXX=g++
114-
- desc: icx/C++17 llvm14 py3.9 oiio2.3 avx2
115-
nametag: linux-icx
93+
- desc: oldest everything gcc9/C++17 llvm9 py3.7 oiio2.3 no-simd
94+
nametag: linux-oldest
11695
runner: ubuntu-latest
117-
container: aswftesting/ci-osl:2022-clang14
118-
vfxyear: 2022
119-
cc_compiler: icx
120-
cxx_compiler: icpx
96+
container: aswftesting/ci-osl:2021-clang11
97+
vfxyear: 2021
98+
old_node: 1
12199
cxx_std: 17
122-
fmt_ver: 7.1.3
123-
opencolorio_ver: v2.3.2
124-
openimageio_ver: main
125-
python_ver: 3.9
126-
pybind11_ver: v2.9.0
127-
simd: avx2,f16c
128-
batched: b8_AVX2_noFMA
129-
setenvs: export OSL_CMAKE_FLAGS="-DSTOP_ON_WARNING=OFF" USE_OPENVDB=0
130-
OPENCOLORIO_CXX=g++
100+
openexr_ver: v3.1.0
101+
openimageio_ver: v2.4.13.0
102+
python_ver: 3.7
103+
pybind11_ver: v2.7.0
104+
simd: 0
105+
setenvs: export PUGIXML_VERSION=v1.8
106+
CMAKE_VERSION=3.15.5
107+
ENABLE_OPENVDB=0
108+
109+
110+
runs-on: ${{matrix.runner}}
111+
container:
112+
image: ${{ matrix.container }}
113+
volumes:
114+
- /node20217:/node20217:rw,rshared
115+
- /node20217:/__e/node20:ro,rshared
116+
env:
117+
CXX: ${{matrix.cxx_compiler}}
118+
CC: ${{matrix.cc_compiler}}
119+
CMAKE_CXX_STANDARD: ${{matrix.cxx_std}}
120+
FMT_VERSION: ${{matrix.fmt_ver}}
121+
OPENCOLORIO_VERSION: ${{matrix.opencolorio_ver}}
122+
OPENEXR_VERSION: ${{matrix.openexr_ver}}
123+
OPENIMAGEIO_VERSION: ${{matrix.openimageio_ver}}
124+
PYBIND11_VERSION: ${{matrix.pybind11_ver}}
125+
PYTHON_VERSION: ${{matrix.python_ver}}
126+
USE_BATCHED: ${{matrix.batched}}
127+
USE_SIMD: ${{matrix.simd}}
128+
ABI_CHECK: ${{matrix.abi_check}}
129+
steps:
130+
# Install nodejs 20 with glibc 2.17, to work around the face that the
131+
# GHA runners are insisting on a node version that is too new for the
132+
# glibc in the ASWF containers prior to 2023.
133+
- name: install nodejs20glibc2.17
134+
if: matrix.old_node == '1'
135+
run: |
136+
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 -
137+
# We would like to use harden-runner, but it flags too many false
138+
# positives, every time we download a dependency. We should use it only
139+
# on CI runs where we are producing artifacts that users might rely on.
140+
# - name: Harden Runner
141+
# uses: step-security/harden-runner@248ae51c2e8cc9622ecf50685c8bf7150c6e8813 # v1.4.3
142+
# with:
143+
# egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
144+
- uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2
145+
- name: Prepare ccache timestamp
146+
id: ccache_cache_keys
147+
run: echo "::set-output name=date::`date -u +'%Y-%m-%dT%H:%M:%SZ'`"
148+
- name: ccache
149+
id: ccache
150+
uses: actions/cache@c3f1317a9e7b1ef106c153ac8c0f00fed3ddbc0d # v3.0.4
151+
with:
152+
path: /tmp/ccache
153+
key: ${{github.job}}-${{matrix.nametag}}-${{steps.ccache_cache_keys.outputs.date}}
154+
restore-keys: ${{github.job}}-${{matrix.nametag}}-
155+
- name: Build setup
156+
run: |
157+
${{matrix.setenvs}}
158+
src/build-scripts/ci-startup.bash
159+
- name: Remove existing OpenEXR
160+
if: matrix.openexr_ver != ''
161+
run: |
162+
sudo rm -rf /usr/local/include/OpenEXR
163+
sudo rm -rf /usr/local/lib*/cmake/OpenEXR
164+
sudo rm -rf /usr/local/lib*/libOpenOpenEXR*
165+
sudo rm -rf /usr/local/lib*/python3.9/site-packages/OpenOpenEXR*
166+
- name: Remove existing OIIO
167+
if: matrix.openimageio_ver != ''
168+
run: |
169+
sudo rm -rf /usr/local/include/OpenImageIO
170+
sudo rm -rf /usr/local/lib*/cmake/OpenImageIO
171+
sudo rm -rf /usr/local/lib*/libOpenImageIO*
172+
sudo rm -rf /usr/local/lib*/python3.9/site-packages/OpenImageIO*
173+
- name: Dependencies
174+
run: |
175+
${{matrix.depcmds}}
176+
src/build-scripts/gh-installdeps.bash
177+
- name: Build
178+
run: |
179+
src/build-scripts/ci-build.bash
180+
- name: Testsuite
181+
if: matrix.skip_tests != '1'
182+
run: src/build-scripts/ci-test.bash
183+
- name: Check out ABI standard
184+
if: matrix.abi_check != ''
185+
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
186+
with:
187+
ref: ${{matrix.abi_check}}
188+
path: abi_standard
189+
- name: Build ABI standard
190+
if: matrix.abi_check != ''
191+
run: |
192+
mkdir -p abi_standard/build
193+
pushd abi_standard
194+
export LD_LIBRARY_PATH="${PWD}/build/lib:${LD_LIBRARY_PATH}"
195+
src/build-scripts/ci-build.bash
196+
popd
197+
- name: Check ABI
198+
if: matrix.abi_check != ''
199+
run: |
200+
src/build-scripts/ci-abicheck.bash ./build abi_standard/build \
201+
liboslexec liboslcomp liboslquery liboslnoise
202+
- uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
203+
if: failure()
204+
with:
205+
name: osl-${{github.job}}-${{matrix.nametag}}
206+
path: |
207+
build/cmake-save
208+
build/compat_reports
209+
build/*.cmake
210+
build/CMake*
211+
build/testsuite/*/*.*
212+
213+
214+
aswf:
215+
name: "VFX${{matrix.vfxyear}} ${{matrix.desc}}"
216+
strategy:
217+
fail-fast: false
218+
matrix:
219+
include:
131220
- desc: gcc11/C++17 llvm15 py3.10 oiio-rel avx2
132221
nametag: linux-vfx2023
133222
runner: ubuntu-latest
@@ -164,33 +253,19 @@ jobs:
164253
simd: avx2,f16c
165254
batched: b8_AVX2
166255
# setenvs: export CONAN_PACKAGES="ptex/2.4.2@aswf/vfx2024"
167-
- desc: oldest everything gcc9/C++17 llvm9 py3.7 oiio2.3 no-simd
168-
nametag: linux-oldest
169-
runner: ubuntu-latest
170-
container: aswftesting/ci-osl:2021-clang11
171-
vfxyear: 2021
172-
cxx_std: 17
173-
openexr_ver: v3.1.0
174-
openimageio_ver: v2.4.13.0
175-
python_ver: 3.7
176-
pybind11_ver: v2.7.0
177-
simd: 0
178-
setenvs: export PUGIXML_VERSION=v1.8
179-
CMAKE_VERSION=3.15.5
180-
ENABLE_OPENVDB=0
181256

182257
# Address and leak sanitizers
183258
- desc: sanitizers
184259
nametag: sanitizer
185260
runner: ubuntu-latest
186-
container: aswftesting/ci-osl:2022-clang13
187-
vfxyear: 2022
261+
container: aswftesting/ci-osl:2024-clang17
262+
vfxyear: 2024
188263
cc_compiler: clang
189264
cxx_compiler: clang++
190265
cxx_std: 17
191266
openimageio_ver: main
192-
python_ver: 3.9
193-
pybind11_ver: v2.9.0
267+
python_ver: "3.11"
268+
pybind11_ver: v2.11.1
194269
simd: avx2,f16c
195270
batched: b8_AVX2
196271
setenvs: export OSL_CMAKE_FLAGS="-DSANITIZE=address -DOSL_TEST_BIG_TIMEOUT=1200"
@@ -244,6 +319,49 @@ jobs:
244319
OPENIMAGEIO_CMAKE_FLAGS="-DUSE_PYTHON=0"
245320
CMAKE_BUILD_TYPE=RelWithDebInfo
246321

322+
- desc: icc/C++17 llvm14 py3.9 oiio-main avx2
323+
nametag: linux-icc
324+
runner: ubuntu-latest
325+
container: aswftesting/ci-osl:2023-clang15
326+
vfxyear: 2023
327+
cc_compiler: icc
328+
cxx_compiler: icpc
329+
cxx_std: 17
330+
fmt_ver: 7.1.3
331+
opencolorio_ver: v2.3.2
332+
openimageio_ver: v2.5.17.0
333+
# Changes to OIIO's simd.h starting in commit 68666db9 (from PR
334+
# #4187) seem to trigger compiler bugs in icc and generate wrong
335+
# SIMD code. It's probably not worth tracking down for just this
336+
# obsolete compiler. Just lock down to OIIO 2.5 for icc builds to
337+
# avoid the problem.
338+
# openimageio_ver: e41ac03c0b21 # works
339+
# openimageio_ver: 68666db994d5 # broken
340+
python_ver: "3.10"
341+
pybind11_ver: v2.10.0
342+
# simd: avx2,f16c
343+
batched: b8_AVX2_noFMA
344+
setenvs: export OSL_CMAKE_FLAGS="-DSTOP_ON_WARNING=OFF -DEXTRA_CPP_ARGS=-fp-model=consistent"
345+
OPENIMAGEIO_CMAKE_FLAGS=-DBUILD_FMT_VERSION=7.1.3
346+
USE_OPENVDB=0 OPENCOLORIO_CXX=g++
347+
- desc: icx/C++17 llvm14 py3.9 oiio2.3 avx2
348+
nametag: linux-icx
349+
runner: ubuntu-latest
350+
container: aswftesting/ci-osl:2023-clang15
351+
vfxyear: 2023
352+
cc_compiler: icx
353+
cxx_compiler: icpx
354+
cxx_std: 17
355+
fmt_ver: 7.1.3
356+
opencolorio_ver: v2.3.2
357+
openimageio_ver: main
358+
python_ver: "3.10"
359+
pybind11_ver: v2.10.0
360+
simd: avx2,f16c
361+
batched: b8_AVX2_noFMA
362+
setenvs: export OSL_CMAKE_FLAGS="-DSTOP_ON_WARNING=OFF" USE_OPENVDB=0
363+
OPENCOLORIO_CXX=g++
364+
247365
runs-on: ${{matrix.runner}}
248366
container:
249367
image: ${{ matrix.container }}

0 commit comments

Comments
 (0)